IAM 認証を管理する

このページでは、Memorystore for Valkey の IAM 認証機能の一般的なタスクに関する手順について説明します。この機能の詳細については、IAM 認証についてをご覧ください。

IAM 認証を使用するインスタンスを作成する

IAM 認証を使用する Memorystore for Valkey インスタンスを作成するには、create コマンドを実行します。

gcloud beta memorystore instances create INSTANCE_ID --region=REGION_ID --network=NETWORK --node-type=NODE_TYPE --shard-count=SHARD_COUNT --auth-mode=iam-auth

以下を置き換えます。

  • INSTANCE_ID は、作成する Memorystore for Valkey インスタンスの ID です。インスタンス ID は 1〜63 文字にする必要があり、小文字、数字、ハイフンのみ使用できます。先頭は英小文字に、末尾は英小文字または数字にする必要があります。

  • REGION_ID は、インスタンスを配置するリージョンです。

  • NETWORK は、インスタンスの作成に使用されたネットワークです。projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID の形式を使用する必要があります。ここで使用するネットワーク ID は、サービス接続ポリシーで使用されるネットワーク ID と一致する必要があります。それ以外の場合、create オペレーションは失敗します。 詳しくは、ネットワーキングをご覧ください。

  • NODE_TYPE は、選択したノードタイプです。次の値が利用できます。

    • shared-core-nano
    • standard-small
    • highmem-medium
    • highmem-xlarge

    ノードタイプとインスタンス構成の詳細については、インスタンスとノードの仕様をご覧ください。

  • SHARD_COUNT によってインスタンス内のシャードの数が決定されます。シャード数によって、インスタンス データを保存するための合計メモリ容量が決定されます。インスタンス仕様の詳細については、インスタンスとノードの仕様をご覧ください。

IAM 認証の権限を付与する

IAM アクセス権を付与するには、IAM ロールを付与する手順を使用して、プリンシパルに roles/memorystore.dbConnectionUser ロールを付与します。

デフォルトでは、プリンシパルに roles/memorystore.dbConnectionUser のロールを付与すると、そのプリンシパルはプロジェクト内のすべてのインスタンスにアクセスできるようになります。

インスタンスに対して制限付き IAM 管理者ロールを作成する

完全な IAM 管理者アクセス権を付与することなく、インスタンス接続の IAM 権限を変更できるロールを作成できます。これを行うには、roles/memorystore.dbConnectionUser ロールに対して制限付きの IAM 管理者を作成します。詳細については、制限付き IAM 管理者を作成するをご覧ください。

IAM 認証を使用するインスタンスに接続する

  1. Valkey インスタンスと同じ承認済みネットワークを使用する Compute Engine VM がまだない場合は、作成してから、Linux VM の使用に関するクイックスタートに沿って接続します。

  2. インスタンスに接続するには、プロジェクトで次のアクセス スコープと API を有効にする必要があります。

  3. Valkey のインストールの手順に沿って、valkey-cli を Compute Engine VM にインストールします。

  4. IAM ユーザーのアクセス トークンを取得するには、次のコマンドを実行します。

    gcloud auth print-access-token
    
  5. インスタンスの検出エンドポイントに接続します。

    valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
    

    以下を置き換えます。

    • NETWORK_ADDRESS は、インスタンスのネットワーク アドレスです。ネットワーク アドレスを表示するには、インスタンスの情報を表示するをご覧ください。

    • PORT は、インスタンスのポート番号です。ポート番号を表示するには、インスタンスの情報を表示するをご覧ください。

    • ACCESS_TOKEN は、前の手順で取得した IAM アクセス トークンです。

  6. CLUSTER SHARDS コマンドを実行して、ノードトポロジを表示します。ノードの IP アドレスとポート番号のいずれかをメモしておきます。

  7. 次のコマンドを実行して、選択したノードに接続します。

    valkey-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
    

    以下を置き換えます。

    • NODE_IP_ADDRESS は、前の手順で確認したノードの IP アドレスです。
    • NODE_PORT は、前の手順で確認したノードのポート番号です。
  8. Valkey の SETGET のコマンドを実行して、インスタンスのノードに対する認証済み接続が確立されたことを確認します。

  9. Valkey インスタンスへの接続をテストしたら、Valkey インスタンスへの接続に使用した Compute Engine VM を削除することを検討してください。そうすることで、Cloud 請求先アカウントへの課金を回避できます。

  10. 次のコマンドを実行して、valkey-cli を使用し、認証を行いインスタンスに接続します。その際、変数は適切な値に置き換えます。

    valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
    

    以下を置き換えます。

    • NETWORK_ADDRESS は、インスタンスのネットワーク アドレスです。ネットワーク アドレスを表示するには、インスタンスの情報を表示するをご覧ください。

    • PORT は、インスタンスのポート番号です。ポート番号を表示するには、インスタンスの情報を表示するをご覧ください。

    • ACCESS_TOKEN は、前の手順で取得した IAM アクセス トークンです。

  11. Valkey の SETGET のコマンドを実行して、インスタンスに対する認証済み接続が確立されたことを確認します。

  12. Valkey インスタンスへの接続をテストしたら、Valkey インスタンスへの接続に使用した Compute Engine VM を削除することを検討してください。そうすることで、Cloud 請求先アカウントへの課金を回避できます。

アクセス トークンの取得を自動化する

アクセス トークンの有効期限は短いため、アクセス トークンは簡単にハードコードできません。そのため、アプリケーションでアクセス トークンの取得を自動化することをおすすめします。

  1. (省略可)アプリケーションのサービス アカウントをまだ作成していない場合は、作成します(サービス アカウントの作成と管理をご覧ください)。

    gcloud iam service-accounts create SA_NAME \
        --description="DESCRIPTION" \
        --display-name="DISPLAY_NAME"
    

    以下を置き換えます。

    • SA_NAME はサービス アカウントの名前です。
    • DESCRIPTION は、サービス アカウントの説明です(省略可能)。
    • DISPLAY_NAME は、Google Cloud コンソールに表示するサービス アカウント名です。
  2. サービス アカウントにプロジェクトの memorystore.dbConnectionUser 権限を付与します。

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \
    --role="memorystore.dbConnectionUser"
    

    以下を置き換えます。

    • PROJECT_ID は、プロジェクト ID です。
    • SA_NAME はサービス アカウントの名前です。
    • ROLE_NAME はロール名です(例: roles/compute.osLogin)。
  3. 指定されたサービス アカウントとしてアプリケーションを認証します。詳細については、サービス アカウントをご覧ください。

    一般的なクライアント ライブラリを使用してアプリケーションを認証する方法を示すコードサンプルについては、IAM 認証クライアント ライブラリのコードサンプルをご覧ください。

IAM Auth を使用するインスタンスに接続するコードサンプル

IAM Auth を使用するインスタンスに接続するようにクライアント ライブラリを設定する方法を示す Valkey 互換のコードサンプルについては、IAM Authentication クライアント ライブラリのコードサンプルをご覧ください。