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

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

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

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

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

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

  • データベースキーを保護する: 特定のパターン(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 Valkey の gcloud CLI コマンドを利用するには、少なくとも gcloud CLI バージョン 489.0.0 が必要です。

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

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

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

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

Memorystore for Valkey の権限を割り当てる

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

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

ACL ポリシーを作成する

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

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

コンソール

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

    Memorystore for Valkey

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

  3. [ACL ポリシー] ページで、[ポリシーを作成] をクリックします。

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

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

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

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

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

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

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

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

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

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

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

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

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

gcloud

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

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

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

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

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

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

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

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

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

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

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

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

インスタンスに ACL ポリシーを割り当てる

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

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

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

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

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

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

コンソール

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

    Memorystore for Valkey

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

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

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

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

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

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

gcloud

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

gcloud memorystore instances update INSTANCE_ID \
--update_mask=acl_policy \
--acl-policy=ACL_POLICY_NAME \
--location=REGION

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

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

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

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

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

コンソール

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

    Memorystore for Valkey

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

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

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

gcloud

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

gcloud memorystore acl-policies list
--location=REGION

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

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

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

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

gcloud memorystore acl-policies describe ACL_POLICY_NAME \
--location=REGION

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

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

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

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

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

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

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

コンソール

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

    Memorystore for Valkey

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

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

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

gcloud

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

gcloud memorystore acl-policies revisions list \
--acl-policy=ACL_POLICY_NAME \
--location=REGION

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

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

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

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

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

コンソール

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

    Memorystore for Valkey

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

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

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

gcloud

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

gcloud memorystore acl-policies revisions describe ACL_POLICY_REVISION_ID \
--acl-policy=ACL_POLICY_NAME \
--location=REGION

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

  • ACL_POLICY_REVISION_ID: 情報を表示する ACL ポリシー リビジョンの ID。この ID は、ACL ポリシーのリビジョンに関する情報を表示したときにメモしました。
  • ACL_POLICY_NAME: リビジョンを含む ACL ポリシーの名前。
  • REGION: ACL ポリシーが配置されているリージョン。

ACL ポリシーを変更する

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

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

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

コンソール

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

    Memorystore for Valkey

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

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

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

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

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

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

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

gcloud

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

gcloud memorystore acl-policies update ACL_POLICY_NAME \
--location=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 Valkey] ページに移動します。

    Memorystore for Valkey

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

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

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

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

  6. ポリシーで変更するその他の ACL ルールについて、ステップ 4 と 5 を繰り返します。

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

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

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

gcloud

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

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

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

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

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

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

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

コンソール

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

    Memorystore for Valkey

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

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

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

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

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

gcloud

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

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

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

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

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

インスタンスから ACL ポリシーを削除する

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

コンソール

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

    Memorystore for Valkey

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

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

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

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

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

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

gcloud

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

gcloud memorystore instances update INSTANCE_ID \
--clear-acl-policy \
--location=REGION

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

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

ACL ポリシーを削除する

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

コンソール

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

    Memorystore for Valkey

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

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

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

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

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

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

gcloud

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

gcloud memorystore acl-policies delete ACL_POLICY_NAME \
--location=REGION

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

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

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

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

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

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

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

  • EVAL: 文字列として提供された Lua スクリプトを実行します。
  • EVALSHA: SCRIPT LOAD コマンドを使用してキャッシュに保存された Lua スクリプトを実行します。
  • SCRIPT : スクリプト キャッシュを管理します(LOADFLUSHEXISTSKILL など)。

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

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

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

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

ポリシーを作成する

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

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

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

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

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

ポリシーの変更

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

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

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

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

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

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

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

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

ポリシーを作成する

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

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

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

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

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

ポリシーの変更

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

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

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

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

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

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

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

ポリシーを作成する

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

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

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

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

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

ポリシーの変更

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

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

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

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

default ユーザーに必要な特定の権限のみを付与する場合は、+@all 値を変更します。たとえば、このユーザーに読み取り専用コマンドへのアクセス権のみを付与する場合は、+@all+@read に変更します。設定できるユーザー権限の詳細については、Valkey 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 ポリシーでは、パスワード文字(<>#! など)や関連するコマンド(nopassresetpassreset など)は使用できません。 ACL ポリシーのルールから、すべてのパスワード文字と関連するコマンドを削除します。次に、ACL ポリシーを再度作成します。認証を設定するには、基本認証または IAM ベースの認証を有効にします。
passwords not allowed in ACL rules (token starts with char). use either IAM or Basic Auth features to enable authentication ACL ポリシーでは、パスワード文字(<>#! など)や関連するコマンド(nopassresetpassreset など)は使用できません。 ACL ポリシーのルールから、すべてのパスワード文字と関連するコマンドを削除します。次に、ACL ポリシーを再度作成します。認証を設定するには、基本認証または IAM ベースの認証を有効にします。
invalid ACL rule syntax 1 つ以上の ACL ポリシーのルールで、アクセス文字列の形式が正しくありません。 アクセス文字列を正しくフォーマットします。
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 instances 少なくとも 1 つのインスタンスに割り当てられている ACL ポリシーを削除しようとしています。 ACL ポリシーを削除する前に、そのポリシーが割り当てられているすべてのインスタンスから削除する必要があります。ポリシーに割り当てられているインスタンスを確認するには、ACL ポリシーに関する情報を表示するをご覧ください。
fast-failing the workflow as the resource is in DELETING state DELETING ステータスの ACL ポリシーを変更しようとしています。 ACL ポリシーのステータスが DELETING の場合、ポリシーを変更することはできません。