ACL ポリシーを使用してクラスタへのアクセスを保護する

Memorystore for Redis Cluster でアクセス制御リスト(ACL)ポリシーを使用すると、クラスタへのアクセスを保護できます。特定の鍵、コマンド、Pub/Sub チャネルへのユーザーとサービス アクセスを制限することで、きめ細かいセキュリティを有効にできます。

ACL ポリシーを使用してクラスタへのアクセスを保護するユースケースの例を次に示します。

  • ロールベース アクセス制御(RBAC)を提供する: アプリケーションのさまざまなコンポーネントに対して個別のユーザー プロファイルを作成します。たとえば、ウェブ フロントエンドには読み取り専用アクセス権を付与し、バックグラウンド ワーカー サービスには読み取り / 書き込みアクセス権を付与できます。これにより、データの誤った漏洩や改ざんを防ぐことができます。
  • 破壊的なコマンドを防止する: FLUSHALL、FLUSHDB、CONFIG などの危険なコマンドを、上位レベルの管理者のみに制限します。これにより、ソフトウェアのバグや手動エラーからデータの完全性が保護されます。
  • マルチテナント アプリケーションのセキュリティを提供する: マイクロサービスまたは外部パートナーごとに個別の ACL ユーザーを使用します。これにより、あるサービスのユーザーが別のサービスが所有する鍵を読み取ったり変更したりできなくなります。

    Memorystore for Redis Cluster は、リソースレベルのマルチテナンシーを提供していません。キースペースが分割されていても、1 つのサービスが不均衡な量のメモリまたは CPU を消費する可能性があります。

  • 読み取り専用の分析とモニタリングを実行する: GET またはその他の読み取り専用コマンド(SCAN や TYPE など)のみを使用できる専用ユーザーを分析エンジンまたはダッシュボード アプリケーションに割り当てます。これにより、誤った書き込みやデータの削除を防ぐことができます。

  • データベース キーを保護する: 特定のパターン(app1:* など)に一致するキーとのみアプリケーションがやり取りできるように制限します。これにより、クラスタ内のデータが論理的に分離されます。

  • Lua スクリプトを無効にする: ACL ポリシーを使用して、クラスタの Lua スクリプト機能を管理します。Lua スクリプトを無効にするか制限すると、パフォーマンスのチューニング、クラスタの機能の簡素化、組織のセキュリティ ガイドラインの遵守に役立ちます。

始める前に

ACL ポリシーの使用を開始する前に、このセクションの手順を完了します。

Google Cloud コンソール、Google Cloud CLI、API を使用する

Google Cloud コンソール、Google Cloud CLI、API を使用するには、次の操作を行います。

  1. Google Cloud コンソールのプロジェクト セレクタ ページで、プロジェクトを選択または Google Cloud 作成します。

    注: この手順で作成するリソースをそのまま保持する予定でない場合は、既存のプロジェクトを選択するのではなく、新しいプロジェクトを作成してください。チュートリアルの終了後にそのプロジェクトを削除すれば、プロジェクトに関連するすべてのリソースを削除できます。


    プロジェクト セレクタに移動
  2. プロジェクトに対して課金が有効になっていることを確認します。プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
  3. Google Cloud CLI をインストールして初期化します。

    注: すでに gcloud CLI をインストールしている場合は、gcloud components update を実行して、最新バージョンがインストールされていることを確認してください。Memorystore for Redis Cluster の gcloud CLI コマンドを利用するには、少なくとも gcloud CLI バージョン 440.0.0 が必要です。

  4. Memorystore for Redis API を有効にします。
    Memorystore for Redis
  5. Network Connectivity API を有効にします。
    Network Connectivity API
  6. Service Consumer Management API を有効にします。
    Service Consumer Management API

Memorystore for Redis Cluster のロールを割り当てる

ユーザーまたは使用しているユーザー アカウントに、操作を行うための必要な権限があることを確認します。

すべての ACL ポリシー オペレーションを実行するには、Redis 管理者(roles/redis.admin)ロールと Redis 編集者(roles/redis.editor)ロールを使用します。ACL ポリシーのみを表示するには、Redis 閲覧者(roles/redis.viewer)ロールを使用します。

Memorystore for Redis Cluster の権限を割り当てる

Memorystore for Redis Cluster で ACL ポリシーを使用するには、Redis 管理者、Redis 編集者、Redis 閲覧者のロールに加えて、次の権限が必要です。

アクション 権限
ACL ポリシーを作成する redis.aclPolicies.create
クラスタに ACL ポリシーを割り当てる redis.clusters.update
ACL ポリシーに関する情報を表示する redis.aclPolicies.list
ACL ポリシーに関する情報を表示する redis.aclPolicies.get
ACL ポリシーのリビジョンに関する情報を表示する redis.aclPolicyRevisions.list
ACL ポリシーのリビジョンに関する情報を表示する redis.aclPolicyRevisions.get
ACL ポリシーを変更する redis.aclPolicies.update
クラスタから ACL ポリシーを削除する redis.clusters.update
ACL ポリシーを削除する redis.aclPolicies.delete

ACL ポリシーを作成する

Memorystore for Redis Cluster で ACL ポリシーを作成すると、特定のキー、コマンド、Pub/Sub チャンネルへのユーザー アクセスを制限して、クラスタのセキュリティを強化できます。

ACL ポリシーは、 Google Cloud コンソールまたは gcloud CLI を使用して作成できます。

コンソール

  1. Google Cloud コンソールで、[Memorystore for Redis Cluster] ページに移動します。

    Memorystore for Redis Cluster

  2. サイド ナビゲーション パネルで、[ACL policies] をクリックします。

  3. [ACL policies] ページで、[Create policy] をクリックします。

  4. [ポリシーを作成] ウィンドウで、次の操作を行います。

    1. [ポリシー名] フィールドに、ACL ポリシーの名前を入力します。ポリシー名に使用できるのは、英小文字、数字、ハイフンのみです。先頭は英字で、そのリージョンで一意である必要があります。

    2. [リージョン] メニューで、Memorystore for Redis Cluster で ACL ポリシーを作成するリージョンを選択します。

    3. [ルールを追加] をクリックします。

    4. [ユーザー ID] フィールドに、ACL ポリシーを適用するユーザーの名前を入力します。

    5. [アクセス文字列] フィールドに、ポリシーのアクセス文字列を入力します。アクセス文字列は、ユーザーの特定の権限を定義する、人が読める形式のルールです。

      たとえば、default スーパーユーザーにクラスタのすべての ACL キーに対する読み取り / 書き込み権限を付与する場合は、[ユーザー ID] フィールドと [アクセス文字列] フィールドに次のように入力します。

      ユーザー ID アクセス文字列
      default on ~* &* +@all

      このルールにより、default ユーザーに次の権限が付与されます。

      • on: ユーザーはアクティブで、認証が有効になっています。
      • ~*: ユーザーは、すべてのキーに対する読み取りアクセス権と書き込みアクセス権を持っています。
      • &*: ユーザーはすべての Pub/Sub チャネルにアクセスできます
      • +@all: ユーザーは、使用可能なすべてのコマンドを実行できます。

      作成できる他の ACL ルールとポリシーの詳細については、Redis ドキュメントの ACL をご覧ください。

    6. ポリシーに作成する追加の ACL ルールについて、手順 c ~ e を繰り返します。

    7. [作成] をクリックします。

gcloud

ACL ポリシーを作成するには、gcloud redis acl-policies create コマンドを使用します。

gcloud redis acl-policies create ACL_POLICY_NAME \
--region=REGION \
--rules=rule="on ~* +@all",username="lucian" \
--rules=rule="on +get",username="taylor"

次のように置き換えます。

  • ACL_POLICY_NAME: 作成する ACL ポリシーの名前。ポリシー名に使用できるのは、英小文字、数字、ハイフンのみです。先頭は英字で、そのリージョンで一意である必要があります。
  • REGION: ACL ポリシーを配置するリージョン。

このポリシーは、基本的なトークンベースの認証を使用し、次のアクションを実行するルールがあります。

  • 最初のルールは、lucian に ~* +@all 権限を付与します。この権限により、ユーザーはすべての鍵にアクセスし、すべてのコマンドを実行できます。
  • 2 つ目のルールでは、taylor に get 権限を付与します。この権限により、ユーザーはキーに関連付けられた値を取得できます。これにより、ユーザーのアクセスが読み取り専用のデータ オペレーションに制限され、ユーザーが鍵を変更できなくなります。

Identity and Access Management(IAM)認証を使用する ACL ポリシーのルールを作成する場合は、ユーザー名(ユーザーのメールアドレスなど)に IAM プリンシパルを使用することをおすすめします。

gcloud redis acl-policies create ACL_POLICY_NAME \
--region=REGION \
--rules=rule="on ~* +@all",username="lucian@example.com" \
--rules=rule="on +get",username="taylor@example.com"

認証を使用しない ACL ポリシーのルールを作成するには、ユーザーが default ユーザーである必要があります。

gcloud redis acl-policies create ACL_POLICY_NAME \
--region=REGION \
--rules=rule="on ~* +@all",username="default"

基本的なトークンベースの認証と IAM 認証の詳細については、基本的なトークンベースの認証を使用してクラスタへのアクセスを保護すると IAM 認証についてをご覧ください。

作成できる他の ACL ルールとポリシーの詳細については、Redis ドキュメントの ACL をご覧ください。

クラスタに ACL ポリシーを割り当てる

クラスタに ACL ポリシーを割り当てるか、割り当てられたポリシーを置き換えることで、Memorystore for Redis Cluster がポリシーのルールをクラスタに適用できるようになります。その結果、特定のキー、コマンド、Pub/Sub チャネルへのユーザー アクセスを制限できます。

クラスタに ACL ポリシーを割り当てるには、Google Cloud コンソールまたは gcloud CLI を使用します。

新しいクラスタにポリシーを割り当てる

クラスタを作成して ACL ポリシーをクラスタに割り当てるには、インスタンスを作成するをご覧ください。

既存のクラスタにポリシーを割り当てる

既存のクラスタのセキュリティを強化するには、クラスタに ACL ポリシーを割り当てます。

コンソール

  1. Google Cloud コンソールで、[Memorystore for Redis Cluster] ページに移動します。

    Memorystore for Redis Cluster

  2. ACL ポリシーを割り当てるクラスタの ID をクリックします。

  3. [クラスタの概要] ページで、[セキュリティ] カードまでスクロールします。

  4. [ACL ポリシー] フィールドの横にある [編集]()をクリックします。

  5. [ACL ポリシーの編集] ウィンドウで、次の操作を行います。

    1. [ポリシー] メニューから、クラスタに割り当てるポリシーを選択します。

    2. [クラスタを更新] をクリックします。

gcloud

既存のクラスタに ACL ポリシーを割り当てるには、gcloud redis clusters update コマンドを使用します。

gcloud redis clusters update CLUSTER_ID \
--update_mask=acl_policy \
--acl-policy=ACL_POLICY_NAME \
--region=REGION

次のように置き換えます。

  • CLUSTER_ID: ACL ポリシーを割り当てるクラスタの ID
  • ACL_POLICY_NAME: ACL ポリシーの名前
  • REGION: クラスタが配置されているリージョン

ACL ポリシーに関する情報を表示する

Memorystore for Redis Cluster の ACL ポリシーに関する情報を表示すると、セキュリティの維持、環境の運用安定性の確保、インメモリ データの監査に役立ちます。これらのポリシーは、特定のキーパターンの読み取りや変更、特定のコマンドの実行、特定の Pub/Sub チャンネルへのアクセスが可能なユーザーを定義します。

ACL ポリシーに関する情報は、Google Cloud コンソールまたは gcloud CLI を使用して表示できます。

コンソール

  1. Google Cloud コンソールで、[Memorystore for Redis Cluster] ページに移動します。

    Memorystore for Redis Cluster

  2. サイド ナビゲーション パネルで、[ACL ポリシー] をクリックします。

    [ACL ポリシー] ページでは、各 ACL ポリシーに関する次の情報を確認できます。

    • ポリシー ID: ポリシーの一意の ID
    • ロケーション: ポリシーが存在するリージョン
    • 作成日時: ポリシーが作成された日時
    • 更新日時: ポリシーが最後に更新された日時
    • ルール数: ポリシーのルールの合計数
    • クラスタで使用: ポリシーに割り当てられているクラスタ

gcloud

ACL ポリシーに関する情報を表示するには、gcloud redis acl-policies list コマンドを使用します。

gcloud redis acl-policies list
--region=REGION

REGION は、ACL ポリシーが配置されているリージョンに置き換えます。

ACL ポリシーに関する情報を表示する

Memorystore for Redis Cluster で ACL ポリシーに関する情報を表示することで、セキュリティ監査の実施、アクセス エラーのトラブルシューティング、ユーザー コマンド、キー権限、Pub/Sub チャンネルへのアクセスを確認して最小権限の原則の適用を行うことができます。また、管理者は ACL ポリシーを表示して、アプリケーションに適切なアクセス権があることを確認し、権限が過剰なルールを検出できます。

ACL ポリシーに関する情報を表示するには、gcloud CLI を使用します。この情報を表示するには、gcloud redis acl-policies describe コマンドを使用します。

gcloud redis acl-policies describe ACL_POLICY_NAME \
--region=REGION

次のように置き換えます。

  • ACL_POLICY_NAME: 情報を表示する ACL ポリシーの名前
  • REGION: ACL ポリシーが配置されているリージョン

ACL ポリシーのリビジョンに関する情報を表示する

ACL ポリシーを作成すると、Memorystore for Redis Cluster はポリシーのバージョン(リビジョン)を作成します。ポリシーを変更するたびに、Memorystore for Redis Cluster は後続のポリシー リビジョンを作成します。

Memorystore for Redis Cluster はこれらのリビジョンを自動的に生成するため、内部トラッキングと監査の目的で使用できます。また、リビジョンを表示すると、各履歴バージョンの ACL ポリシーの正確な内容を確認できます。

ACL ポリシーのリビジョンを使用すると、どのクラスタがどのポリシーのリビジョンを使用しているかを追跡できます。これにより、ポリシーの更新後の結果整合性の期間中に、可視性を維持し、クラスタが正しいバージョンであることを確認できます。

ACL ポリシーのリビジョンに関する情報は、Google Cloud コンソールまたは gcloud CLI を使用して表示できます。

コンソール

  1. Google Cloud コンソールで、[Memorystore for Redis Cluster] ページに移動します。

    Memorystore for Redis Cluster

  2. サイド ナビゲーション パネルで、[ACL policies] をクリックします。

  3. [ACL ポリシー] ページで、表示するリビジョンを含む ACL ポリシーの ID をクリックします。[ACL ポリシーのリビジョン] ページに、次の情報が表示されます。

    • リビジョン ID: 各 ACL ポリシー リビジョンの ID
    • リビジョン番号: 各 ACL ポリシー リビジョンの番号
    • ロケーション: 各 ACL ポリシー リビジョンが配置されているリージョン
    • 作成日: 各 ACL ポリシー リビジョンが作成された日時
    • 接続クラスタ: 各 ACL ポリシー リビジョンに割り当てられているクラスタ
    • スナップショット: 各 ACL ポリシー リビジョンに関する詳細情報

gcloud

ACL ポリシーのリビジョンに関する情報を表示するには、gcloud redis acl-policies revisions list コマンドを使用します。

gcloud redis acl-policies revisions list \
--acl-policy=ACL_POLICY_NAME \
--region=REGION

次のように置き換えます。

  • ACL_POLICY_NAME: 情報を表示するリビジョンを含む ACL ポリシーの名前
  • REGION: ACL ポリシーが配置されているリージョン

出力で、リビジョン ID をメモします。これらの ID は、特定の ACL ポリシー リビジョンに関する情報を表示するために必要です。

ACL ポリシーのリビジョンに関する情報を表示する

ACL ポリシーのリビジョンを表示すると、そのルール、メタデータ、接続されているすべてのクラスタのリストを確認できます。ACL ポリシーの改訂に関する情報は、 Google Cloud コンソールまたは gcloud CLI を使用して表示できます。

コンソール

  1. Google Cloud コンソールで、[Memorystore for Redis Cluster] ページに移動します。

    Memorystore for Redis Cluster

  2. サイド ナビゲーション パネルで、[ACL ポリシー] をクリックします。

  3. [ACL policies] ページで、表示するリビジョンがある ACL ポリシーの ID をクリックします。

  4. [ACL ポリシーのリビジョン] ページで、表示する情報を含む ACL ポリシーのリビジョンの横にある [スナップショット] リンクをクリックします。

gcloud

ACL ポリシーのリビジョンに関する情報を表示するには、gcloud redis acl-policies revisions describe コマンドを使用します。

gcloud redis acl-policies revisions describe ACL_POLICY_REVISION_ID \
--acl-policy=ACL_POLICY_NAME \
--region=REGION

次のように置き換えます。

ACL ポリシーを変更する

Memorystore for Redis Cluster で ACL ポリシーを変更すると、セキュリティの強化、最小権限アクセスの適用、運用上の安全性の管理を行うことができます。ポリシーを変更するには、 Google Cloud コンソールまたは gcloud CLI を使用します。

ACL ポリシーにルールを追加する

ACL ポリシーのセキュリティを強化するには、ルールを追加します。

コンソール

  1. Google Cloud コンソールで、[Memorystore for Redis Cluster] ページに移動します。

    Memorystore for Redis Cluster

  2. サイド ナビゲーション パネルで、[ACL policies] をクリックします。

  3. ルールを追加する ACL ポリシーの横にある [その他の操作]()をクリックし、[編集] を選択します。

  4. [ポリシーの編集] ウィンドウで、[ルールを追加] をクリックします。

  5. [ユーザー ID] フィールドに、ACL ポリシーを適用するユーザーの名前を入力します。

  6. [アクセス文字列] フィールドに、ポリシーのアクセス文字列を入力します。ACL ポリシーのアクセス文字列の詳細については、ACL ポリシーを作成するをご覧ください。

  7. ポリシーに追加する ACL ルールごとに、手順 4 ~ 6 を繰り返します。

  8. [保存] をクリックします。

gcloud

ACL ポリシーにルールを追加するには、gcloud redis acl-policies update コマンドを使用します。

gcloud redis acl-policies update ACL_POLICY_NAME \
--region=REGION \
--add-rules=rule="on ~list:*",username="lucian"

次のように置き換えます。

  • ACL_POLICY_NAME: ACL ルールを追加する ACL ポリシーの名前
  • REGION: ACL ポリシーが配置されているリージョン

このルールにより、list: で始まるすべての鍵へのアクセス権が lucian に付与されます。

ACL ポリシーのルールを変更する

ACL ポリシーの ACL ルールを変更すると、セキュリティが強化され、運用の安全性が向上し、ユーザー アクセス制御をより細かく設定できます。たとえば、インシデント対応中に権限を取り消したり、デバッグ目的で一時的なアクセスを有効にしたりできます。

コンソール

  1. Google Cloud コンソールで、[Memorystore for Redis Cluster] ページに移動します。

    Memorystore for Redis Cluster

  2. サイド ナビゲーション パネルで、[ACL ポリシー] をクリックします。

  3. ルールを変更する ACL ポリシーの横にある [その他の操作]()をクリックし、[編集] を選択します。

  4. [ポリシーの編集] ウィンドウで、[ルールを追加] をクリックします。

  5. [ユーザー ID] フィールドと [アクセス文字列] フィールドで、ポリシーのユーザー ID またはアクセス文字列を変更します。ACL ポリシーのアクセス文字列の詳細については、ACL ポリシーを作成するをご覧ください。

  6. ポリシーで変更する追加の ACL ルールについて、手順 4 と 5 を繰り返します。

  7. [保存] をクリックします。

ACL ポリシーのルールを置き換える

ポリシーのルールを変更する場合と同様に、ポリシーのルールを置き換えることで、セキュリティの強化、運用上の安全性の向上、ユーザー アクセス制御のきめ細かな管理が可能になります。

gcloud

ACL ポリシーのルールを置き換えるには、gcloud redis acl-policies update コマンドを使用します。

gcloud redis acl-policies update ACL_POLICY_NAME \
--region=REGION \
--rules=rule="on ~c*che",username="lucian"

次のように置き換えます。

  • ACL_POLICY_NAME: ACL ルールを置き換える ACL ポリシーの名前
  • REGION: ACL ポリシーが配置されているリージョン

ポリシーを置き換えるルールは、c*che パターンに一致するすべての鍵への lucian アクセス権を付与します。たとえば、cache、caache、ceche などです。

ACL ポリシーからルールを削除する

ACL ルールが ACL ポリシーに適用されなくなった場合は、削除できます。

コンソール

  1. Google Cloud コンソールで、[Memorystore for Redis Cluster] ページに移動します。

    Memorystore for Redis Cluster

  2. サイド ナビゲーション パネルで、[ACL policies] をクリックします。

  3. ルールを削除する ACL ポリシーの横にある [その他の操作]()をクリックし、[編集] を選択します。

  4. [ポリシーの編集] ウィンドウで、ポリシーから削除するルールの横にある [ルールを削除]()をクリックします。

  5. ポリシーから削除する追加の ACL ルールについて、ステップ 4 を繰り返します。

  6. [保存] をクリックします。

gcloud

ACL ポリシーからルールを削除するには、gcloud redis acl-policies update コマンドを使用します。

gcloud redis acl-policies update ACL_POLICY_NAME \
--region=REGION \
--remove-rules=rule="on ~set",username="lucian"

次のように置き換えます。

  • ACL_POLICY_NAME: ACL ルールを削除する ACL ポリシーの名前
  • REGION: ACL ポリシーが配置されているリージョン

このルールを削除すると、lucian の関連付けられた権限が取り消されます。クラスタにアクセスするには、lucian が default ユーザーとして接続する必要があります。このユーザーの権限が適用されます。

クラスタから ACL ポリシーを削除する

ACL ポリシーが Memorystore for Redis Cluster のクラスタに適用されなくなった場合は、削除できます。ポリシーを削除するには、Google Cloud コンソールまたは gcloud CLI を使用します。

コンソール

  1. Google Cloud コンソールで、[Memorystore for Redis Cluster] ページに移動します。

    Memorystore for Redis Cluster

  2. ACL ポリシーを削除するクラスタの ID をクリックします。

  3. [クラスタの概要] ページで、[セキュリティ] カードまでスクロールします。

  4. [ACL ポリシー] フィールドの横にある [編集]()をクリックします。

  5. [ACL ポリシーの編集] ウィンドウで、次の操作を行います。

    1. [ポリシー] メニューから [ポリシーなし] を選択します。

    2. [クラスタを更新] をクリックします。

gcloud

クラスタから ACL ポリシーを削除するには、gcloud redis clusters update コマンドを使用します。

gcloud redis clusters update CLUSTER_ID \
--acl-policy="" \
--region=REGION

次のように置き換えます。

  • CLUSTER_ID: ACL ポリシーを削除するクラスタの ID
  • REGION: クラスタが配置されているリージョン

acl-policy パラメータの "" 値が空の文字列です。これは、クラスタから ACL ポリシーを削除することを示します。

ACL ポリシーを削除する

ACL ポリシーが不要になった場合は、削除できます。ポリシーを削除するには、 Google Cloud コンソールまたは gcloud CLI を使用します。

コンソール

  1. Google Cloud コンソールで、[Memorystore for Redis Cluster] ページに移動します。

    Memorystore for Redis Cluster

  2. サイド ナビゲーション パネルで、[ACL ポリシー] をクリックします。

  3. 削除する ACL ポリシーの横にある [その他の操作]()をクリックし、[削除] を選択します。

    [削除] メニュー項目が無効になっている場合、ポリシーはクラスタに割り当てられています。ポリシーを削除する前に、各クラスタからポリシーを削除する必要があります。

  4. [ポリシーの削除] ウィンドウで、次の操作を行います。

    1. テキスト フィールドにポリシーの名前を入力します。

    2. [削除] をクリックします。

gcloud

ACL ポリシーを削除するには、gcloud redis acl-policies delete コマンドを使用します。

gcloud redis acl-policies delete ACL_POLICY_NAME \
--region=REGION

次のように置き換えます。

  • ACL_POLICY_NAME: 削除する ACL ポリシーの名前
  • REGION: ACL ポリシーが配置されているリージョン

Lua スクリプトを無効にする

ACL ポリシーを使用して、クラスタの Lua スクリプト機能を管理できます。Lua スクリプトを無効化または制限すると、パフォーマンスのチューニング、クラスタの機能の簡素化、組織のセキュリティ ガイドラインの遵守に役立ちます。

ユーザーのスクリプト コマンドを無効にする

ユーザーが Lua スクリプトを実行できないように無効にするには、ACL ポリシーを使用して、ユーザーの ACL ルール文字列からスクリプト コマンドの権限を削除する必要があります。

Redis はコマンドをグループに分類します。Lua スクリプトは @scripting カテゴリに分類されます。ユーザー権限を削除する必要がある主なコマンドは次のとおりです。

  • EVAL: 文字列として指定された Lua スクリプトを実行します。
  • EVALSHA: SCRIPT LOAD コマンドを使用してキャッシュに保存された Lua スクリプトを実行します。
  • SCRIPT: スクリプト キャッシュを管理します(例: LOAD、FLUSH、EXISTS、KILL)。

    SCRIPT コマンドには、次のサブコマンドが含まれています。

すべてのスクリプト コマンドを無効にすることも、特定のコマンドを無効にすることもできます。スクリプト コマンドを無効にするには、gcloud CLI を使用し、コマンドまたはカテゴリの前にマイナス記号(-)を付けます。

ユーザーのすべてのスクリプト コマンドを無効にする

ユーザーのすべてのスクリプト コマンドを無効にするには、ACL ポリシーを作成してクラスタに割り当てるか、クラスタに割り当てられている ACL ポリシーを変更します。

ポリシーを作成する

lucian という名前のユーザーのすべてのスクリプト コマンドを無効にする ACL ポリシーを作成するには、gcloud redis acl-policies create コマンドを使用します。

gcloud redis acl-policies create POLICY_NAME \
--region=REGION \
--rules=rule="on ~* +@all -@scripting",username=lucian

次のように置き換えます。

  • POLICY_NAME: ACL ポリシーの名前
  • REGION: ACL ポリシーを配置するリージョン

ポリシーを作成したら、新しいクラスタまたは既存のクラスタに割り当てる必要があります。

ポリシーの変更

lucian のすべてのスクリプト コマンドを無効にするように ACL ポリシーを変更するには、gcloud redis acl-policies update コマンドを使用します。

gcloud redis acl-policies update POLICY_NAME \
--region=REGION \
--rules=rule="on ~* +@all -@scripting",username=lucian

次のように置き換えます。

  • POLICY_NAME: ACL ポリシーの名前
  • REGION: ACL ポリシーが配置されているリージョン

ユーザーに必要な特定の権限のみを付与する場合は、+@all 値を変更します。たとえば、ユーザーに読み取り専用コマンドのみへのアクセス権を付与する場合は、+@all を +@read に変更します。設定可能なユーザー権限の詳細については、Redis ACL のドキュメントをご覧ください。

ユーザーのスクリプト コマンドを無効にする

特定のコマンドを対象として、ユーザーに対して無効にすることができます。たとえば、SCRIPT FLUSH コマンドを除くすべてのスクリプト コマンドをユーザーが実行できるようにすることができます。ユーザーのスクリプト コマンドを無効にするには、ACL ポリシーを作成してクラスタに割り当てるか、クラスタに割り当てられている ACL ポリシーを変更します。

スクリプト コマンドは無効にできます。このセクションの例では、ユーザーの SCRIPT FLUSH コマンドを無効にします。スクリプト コマンドの一覧については、ユーザーのスクリプト コマンドを無効にするをご覧ください。

ポリシーを作成する

lucian の SCRIPT FLUSH スクリプト コマンドを無効にする ACL ポリシーを作成するには、gcloud redis acl-policies create コマンドを使用します。

gcloud redis acl-policies create POLICY_NAME \
--region=REGION \
--rules=rule="on ~* -script|flush",username=lucian

次のように置き換えます。

  • POLICY_NAME: ACL ポリシーの名前
  • REGION: ACL ポリシーを配置するリージョン

ポリシーを作成したら、新しいクラスタまたは既存のクラスタに割り当てる必要があります。

ポリシーの変更

lucian のすべてのスクリプト コマンドを無効にするように ACL ポリシーを変更するには、gcloud redis acl-policies update コマンドを使用します。

gcloud redis acl-policies update POLICY_NAME \
--region=REGION \
--rules=rule="on ~* -script|flush",username=lucian

次のように置き換えます。

  • POLICY_NAME: ACL ポリシーの名前
  • REGION: ACL ポリシーが配置されているリージョン

ユーザーに必要な特定の権限のみを付与する場合は、+@all 値を変更します。たとえば、ユーザーに読み取り専用コマンドのみへのアクセス権を付与する場合は、+@all を +@read に変更します。設定可能なユーザー権限の詳細については、Redis ACL のドキュメントをご覧ください。

デフォルト ユーザーを保護する

default スーパーユーザーのスクリプト権限を無効にするには、ACL ポリシーを作成してクラスタに割り当てるか、クラスタに割り当てられている ACL ポリシーを変更します。

ポリシーを作成する

default ユーザーのすべてのスクリプト コマンドを無効にする ACL ポリシーを作成するには、gcloud redis acl-policies create コマンドを使用します。

gcloud redis acl-policies create POLICY_NAME \
--region=REGION \
--rules=rule="on ~* +@all -@scripting",username=default

次のように置き換えます。

  • POLICY_NAME: ACL ポリシーの名前
  • REGION: ACL ポリシーを配置するリージョン

ポリシーを作成したら、新規または既存のクラスタに割り当てる必要があります。

ポリシーの変更

ACL ポリシーを変更して default ユーザーのすべてのスクリプト コマンドを無効にするには、gcloud redis acl-policies update コマンドを使用します。

gcloud redis acl-policies update POLICY_NAME \
--region=REGION \
--rules=rule="on ~* +@all -@scripting",username=default

次のように置き換えます。

  • POLICY_NAME: ACL ポリシーの名前
  • REGION: ACL ポリシーが配置されているリージョン

default ユーザーが必要とする特定の権限のみを付与する場合は、+@all 値を変更します。たとえば、このユーザーに読み取り専用コマンドのみへのアクセス権を付与する場合は、+@all を +@read に変更します。設定できるユーザー権限の詳細については、Redis ACL のドキュメントをご覧ください。

トラブルシューティング

このセクションでは、ACL ポリシーの使用時に表示される可能性のあるエラー メッセージ、これらのメッセージの理由、メッセージのトラブルシューティングのヒントを示します。

エラー メッセージ 原因 トラブルシューティング
username cannot be empty ACL ポリシーのユーザー名に空の文字列または空白文字のみを含む文字列を設定しました。 英数字または特殊文字を含むユーザー名を使用します。次に、ACL ポリシーを再度作成します。
duplicate username found in ACL policy ACL ポリシーに重複するユーザー名があります。 エラーログを使用して、重複するユーザー名を見つけます。ACL ポリシー作成リクエストを変更して、ユーザー名に対して 1 つのルールのみを指定します。次に、ACL ポリシーを再度作成します。
ACL rule token cannot contain token. use either IAM or Basic Auth features to enable authentication ACL ポリシーでは、パスワード文字(<、>、#、! など)や関連するコマンド(nopass、resetpass、reset など)は使用できません。 ACL ポリシーのルールから、パスワード文字と関連するコマンドをすべて削除します。次に、ACL ポリシーを再度作成します。認証を設定するには、基本認証または IAM ベースの認証を有効にします。
passwords not allowed in ACL rules (token starts with char). use either IAM or Basic Auth features to enable authentication ACL ポリシーでは、パスワード文字(<、>、#、! など)や関連するコマンド(nopass、resetpass、reset など)を使用できません。 ACL ポリシーのルールから、パスワード文字と関連するコマンドをすべて削除します。次に、ACL ポリシーを再度作成します。認証を設定するには、基本認証または IAM ベースの認証を有効にします。
invalid ACL rule syntax ACL ポリシーの 1 つ以上のルールで、アクセス文字列の形式が正しくありません。 アクセス文字列を正しくフォーマットします。
ACL policy is in DELETING state and cannot be used ACL ポリシーをクラスタに割り当てようとしていますが、ポリシーのステータスが DELETING です。 別の ACL ポリシーをクラスタに割り当てます。
ACL_POLICY_IN_USE: ACL policy is in use by 1 or more clusters 1 つ以上のクラスタに割り当てられている ACL ポリシーを削除しようとしています。 ACL ポリシーを削除する前に、ポリシーが割り当てられているすべてのクラスタからポリシーを削除する必要があります。ポリシーに割り当てられているクラスタを確認するには、ACL ポリシーに関する情報を表示するをご覧ください。
fast-failing the workflow as the resource is in DELETING state DELETING ステータスの ACL ポリシーを変更しようとしています。 ACL ポリシーのステータスが DELETING の場合、ポリシーを変更することはできません。