2026年6月2日

2026年6月2日

WordPressで管理者以外が管理画面にアクセスできないようにする

はじめに

ここでは、管理者以外のユーザーがWordPressのダッシュボード(管理画面)にアクセスできないようにするための方法と設定手順について紹介します。これにより、サイトの安全性を高めることができます。

症状・背景

  • <管理者権限を持たないユーザーが誤って管理画面にログインして問題を引き起こす>
  • <マルウェアや不正アクセスから重要なデータを保護する必要がある>
  • <複数のユーザーでサイトを運用し、それぞれに適切なアクセス権限を与える必要がある>
  • <特定の機能を使用できるユーザーを限定したい>

手順・設定方法

ステップ1: ユーザーロールと権限の確認

# WordPressのwp-adminディレクトリからユーザーロール一覧を表示します。
php wp-cli.php user list --role=

# 特定のユーザーのロールとメタ情報を表示します。
php wp-cli.php user get <ユーザーID> --fields=roles,allcaps

ステップ2: 管理者以外の権限を削除

# 既存のユーザーのロールを一覧から選択し、管理者以外に変更します。
php wp-cli.php user update <ユーザーID> --role=<非管理ユーザーロール>

# ユーザーが特定の機能にアクセスできないようにするカスタムメタデータを設定します。
php wp-cli.php user meta update <ユーザーID> 'disable_admin_access' true

ステップ3: カスタムプラグインまたはフックの使用

# フィルターを使用して、非管理者が管理画面にアクセスできないようにします。
add_filter( 'user_has_cap', 'restrict_admin_access', 99, 3 );
function restrict_admin_access($allcaps) {
    if (!current_user_can('administrator')) {
        $allcaps['manage_options'] = false;
        // 他の権限も適宜無効化します。
    }
    return $allcaps;
}

ステップ4: ファイルやディレクトリへのアクセスを制御

# .htaccessファイルに管理者以外のユーザーがwp-adminディレクトリにアクセスできないようにするルールを追加します。
<FilesMatch "^(wp-admin)">
    Order deny,allow
    Deny from all
    Allow from 123.456.789.0/24 # IPアドレスやサブネットマスクを指定します
</FilesMatch>

注意事項

  • <実践的な注意点1>: ユーザーロールと権限を適切に管理し、必要最小限のアクセスを許可することが重要です。
  • <実践的な注意点2>: カスタムメタデータやフックを使用する際は、更新頻度が高くないか確認してください。
  • <セキュリティ上の注意>: .htaccessファイルの変更は慎重に行い、バックアップを取ることを忘れないでください。
  • <パフォーマンス/運用上の注意>: ファイルやディレクトリへのアクセス制御は、管理者がアクセスする場合でも機能しないため、IPベースのアクセス制御を使用する場合は注意が必要です。

まとめ

1. ユーザーロールの管理: 管理者以外のユーザーには適切なロールを設定します。

2. カスタムメタデータの使用: 必要に応じて、ユーザーが特定の機能を使用できないように制御します。

3. wp-config.phpでのカスタマイズ: 必要であれば、wp-config.phpファイルでサイトのアクセス制限を設定します。

4. セキュリティプラグインの活用: 管理者以外のユーザーが管理画面にアクセスできないようにするためのセキュリティプラグインを利用することができます。

5. アクセスログの監視: 意図しないアクセスがないか定期的にチェックし、不審なアクセスがあれば直ちに対応します。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ