このページでは、Memorystore for Valkey の IAM 認証機能の一般的なタスクに関する手順について説明します。この機能の詳細については、 IAM 認証についてをご覧ください。
IAM 認証を使用してインスタンスを作成する
IAM 認証を使用する Memorystore for Valkey インスタンスを作成するには、create コマンドを実行します。
gcloud memorystore instances create INSTANCE_ID --region=REGION_ID --network=NETWORK --node-type=NODE_TYPE --shard-count=SHARD_COUNT --authorization-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 は、 インスタンスのノードタイプです。
SHARD_COUNT によってインスタンス内のシャードの数が決定されます。シャード数によって、インスタンス データを保存するための合計メモリ容量が決定されます。インスタンス仕様の詳細については、インスタンスとノードの仕様をご覧ください。
IAM 認証の権限を付与する
IAM アクセス権を付与するには、IAM ロールを付与するの手順に沿って、プリンシパルに
roles/memorystore.dbConnectionUser ロールを付与します。
デフォルトでは、プリンシパルに roles/memorystore.dbConnectionUser ロールを付与すると、プリンシパルはプロジェクト内のすべてのインスタンスにアクセスできます。
インスタンスに対して制限付き IAM 管理者ロールを作成する
完全な IAM 管理者アクセス権を付与せずに、インスタンス接続の IAM 権限を変更できるロールを作成することが必要な場合があります。これを行うには、roles/memorystore.dbConnectionUser ロールに対して制限付き IAM 管理者を作成します。詳細については、制限付き IAM 管理者を作成するをご覧ください。
IAM 認証を使用するインスタンスに接続する
Valkey インスタンスと同じ 承認済みネットワークを使用する Compute Engine VM がまだない場合は、作成してから、 Linux VM の使用に関するクイックスタートに沿って接続します。
プロジェクトで、Cloud Platform API スコープを有効にします。このアクセス スコープを有効にする方法について詳しくは、 サービス アカウントを接続してアクセス スコープを更新するをご覧ください。このスコープのベスト プラクティスについて詳しくは、 スコープのベスト プラクティスをご覧ください。
プロジェクトで、Memorystore for Valkey API を有効にします。
Valkey をインストールするの手順に沿って、
valkey-cli`valkey-cli` を Compute Engine VM にインストールします。次のコマンドを実行して、IAM ユーザーのアクセス トークンを取得します。
gcloud auth print-access-token
アクセス トークンの有効期限は 1 時間です。詳細については、IAM アクセス トークンの有効期間をご覧ください。
インスタンスの検出エンドポイントに接続します。
valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
以下を置き換えます。
NETWORK_ADDRESS: インスタンスのネットワーク アドレス。ネットワーク アドレスを表示するには、インスタンス情報を表示するをご覧ください。
PORT: インスタンスのポート番号。ポート番号を表示するには、 インスタンス情報を表示するをご覧ください。
ACCESS_TOKEN:前のステップで取得したアクセス トークン。
ユーザー名を指定する場合は、
defaultユーザー名または IAM プリンシパルのメールアドレスを使用する必要があります。また、認証された接続は、トークンの有効期限が切れても有効です。詳細については、 IAM アクセス トークンの有効期間をご覧ください。インスタンスで転送中の暗号化を有効にする場合は、Transport Layer Security(TLS)フラグを追加する必要があります。次に例を示します。
valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c --tls --cacert /tmp/server_ca.pem
省略可: クラスタ モードが有効になっているインスタンスがある場合は、
CLUSTER SHARDSコマンドを実行してノード トポロジを表示します。ノードの IP アドレスとポート番号のいずれかをメモします。クラスタ モードが無効になっているインスタンスがある場合は、この手順をスキップできます。
valkey-cliを使用してノードを認証して接続するには、次のコマンドを使用します。valkey-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
以下を置き換えます。
- NODE_IP_ADDRESS: 前のステップでメモしたノードの IP アドレス
- NODE_PORT: 前の ステップでメモしたノードのポート番号
- ACCESS_TOKEN: この手順で先に取得した IAM アクセス トークン
ノードへの認証済み接続があることを確認するには、Valkey の
SETコマンドとGETコマンドを実行します。インスタンスへの接続に使用した Compute Engine VM を削除します。これにより、Cloud 請求先アカウントへの課金を回避できます。
アクセス トークンの取得を自動化する
アプリケーションでアクセス トークンの取得を自動化することを強くおすすめします。アクセス トークンの有効期間が短いため、トークンをハードコードすることは困難です。
(省略可) まだ作成していない場合は、アプリケーションのサービス アカウントを作成します(サービス アカウントの作成と管理を参照してください)。
gcloud iam service-accounts create SA_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"以下を置き換えます。
- SA_NAME はサービス アカウントの名前です。
- DESCRIPTION は、サービス アカウントの説明です(省略可能)。
- DISPLAY_NAME は、 Google Cloud コンソールに表示するサービス アカウント名です。
サービス アカウントに、プロジェクトの
memorystore.dbConnectionUserロールを付与します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NAME@PROJECT_ID." \ --role=roles/"ROLE_NAME"
以下を置き換えます。
- PROJECT_ID: プロジェクト ID。
- SA_NAME: サービス アカウントの名前。
- ROLE_NAME: ロール名。この例では、
memorystore.dbConnectionUserです。
指定されたサービス アカウントとしてアプリケーションを認証します。詳細については、サービス アカウント をご覧ください。
一般的なクライアント ライブラリを使用してアプリケーションを認証する方法を示すコードサンプルについては、クライアント ライブラリのコードサンプルをご覧ください。
IAM 認証を使用するインスタンスに接続するコードサンプル
IAM 認証を使用するインスタンスに接続するようにクライアント ライブラリを設定する方法を示す Valkey 互換のコードサンプルについては、IAM 認証と転送中の暗号化の両方のコードサンプルをご覧ください。
IAM 認証のエラー メッセージのトラブルシューティング
| エラー メッセージ | 推奨される対応 | 説明 |
|---|---|---|
|
Memorystore for Valkey サーバーに提供されたアクセス トークンを確認し、一致する ACL ユーザーが有効になっていることを確認します。 | IAM プリンシパルに必要な権限がないか、提供したアクセス トークンが無効であるか、一致する ACL ユーザーが無効になっています。 アクセス トークンの有効期限が切れていないことと、IAM 認証を使用するインスタンスに接続するの手順に沿ってトークンを取得したことを確認します。 IAM 権限を最近変更した場合は、権限が反映されるまでに数分かかることがあります。 |
|
アプリケーションが、IAM アクセス トークンを Memorystore for Valkey サーバーに提供するように構成されていることを確認します。 | アプリケーションがアクセス トークンを Memorystore for Valkey サーバーに提供していません。 アプリケーションがアクセス トークンを提供するように構成されていることと、 IAM 認証を使用するインスタンスに接続するの手順に沿ってアクセス トークンを取得したことを確認します。 |
|
指数バックオフを使用して再試行する。 | IAM バックエンドが過負荷になり、Memorystore for Valkey サーバーに割り当て超過エラーが返されました。 接続エラーがさらに発生しないように、アプリケーションで指数バックオフを使用してこのエラーを再試行することをおすすめします。 |
|
ユーザー名を確認するか、指数バックオフを使用して再試行します。 | このエラーは、次の理由で発生します。
ユーザー名が有効な場合は、接続エラーがさらに発生しないように、アプリケーションで指数バックオフを使用してこのエラーを再試行することをおすすめします。 |