IAM 認証について

Memorystore には、IAM を活用した Identity and Access Management(IAM)認証機能が用意されており、ユーザーとサービス アカウントのログイン アクセスをより適切に管理できます。IAM ベースの認証は Redis AUTH と統合されており、静的パスワードに依存せずに認証情報(IAM トークン)をシームレスにローテーションできます。

Memorystore クラスタの IAM 認証の設定手順については、IAM 認証を管理するをご覧ください。

Redis の IAM 認証

IAM 認証を使用する場合、Memorystore クラスタへのアクセス権はエンドユーザーに直接付与されません。代わりに、複数の権限をロールにまとめて、プリンシパルに付与します。詳細については、IAM の概要をご覧ください。

IAM で認証する管理者は、Memorystore IAM 認証を使用して、IAM ポリシーでインスタンスへのアクセス制御を一元管理できます。IAM ポリシーには、次のエンティティが含まれます。

  • プリンシパル。Memorystore では、ユーザー アカウントとサービス アカウント(アプリケーション用)という 2 種類のプリンシパルを使用できます。その他のプリンシパル タイプ(Google グループ、Google Workspace ドメイン、Cloud Identity ドメインなど)は、IAM 認証ではサポートされていません。詳細については、ID に関するコンセプトをご覧ください。

  • ロール。Memorystore IAM 認証では、ユーザーにはクラスタで認証を行うための redis.clusters.connect 権限が必要となります。この権限を取得するには、事前定義の Redis クラスタ DB 接続ユーザー(roles/redis.dbConnectionUser)ロールにユーザー アカウントまたはサービス アカウントをバインドします。IAM ロールの詳細については、ロールについてをご覧ください。

  • リソース。プリンシパルがアクセスするリソースは Memorystore クラスタです。デフォルトでは、IAM ポリシー バインディングはプロジェクト レベルで適用されるため、プリンシパルはプロジェクト内のすべての Memorystore インスタンスのロール権限を受け取ります。ただし、IAM ポリシー バインディングは特定のクラスタに制限できます。手順については、IAM 認証の権限を管理するをご覧ください。

Redis AUTH コマンド

IAM 認証機能は Redis AUTH コマンドを使用して IAM と統合します。これにより、クライアントはデータへのアクセスを許可する前に Memorystore クラスタによって検証される IAM アクセス トークンを提供できます。

すべてのコマンドと同様に、転送中の暗号化が有効になっていない限り、AUTH コマンドは暗号化されずに送信されます。

AUTH コマンドの例については、IAM 認証を使用する Redis クラスタに接続するをご覧ください。

IAM アクセス トークンの期間

デフォルトでは、認証の一部として取得した IAM アクセス トークンは、取得後 1 時間で期限切れになります。または、アクセス トークンを生成するときに、アクセス トークンの有効期限を定義できます。

新しい Redis 接続を確立するときに、AUTH コマンドを使用して有効なアクセス トークンを提示する必要があります。トークンの有効期限が切れている場合は、新しい接続を確立するために新しいトークンを取得する必要があります。ただし、既存の接続をすでに認証している場合は、トークンが期限切れになっても引き続き機能します。

認証済み接続を終了する

接続を終了する場合は、Redis の CLIENT KILL コマンドを使用します。終了する接続を見つけるには、まず CLIENT LIST を実行します。これによりクライアント接続が経過時間順に返されます。その後、CLIENT KILL を実行すると接続を終了できます。

IAM 認証を有効にする

IAM 認証を有効にしても、定常状態のパフォーマンスは低下しません。ただし、接続を確立できるレートには影響します。

IAM 認証を有効にすると、1 秒ごとに確立されるクライアント接続のレートが調整されます。これは、Google Cloud の IAM 認証で新しい接続ごとに認証を行う必要があるためです。定常状態では、アプリケーションが接続プールを有効にするため、この影響は無視できます。ただし、デプロイやバウンス処理によってクライアント アプリケーションが更新されると、接続が再び確立される可能性があります。クライアントを段階的に更新し、指数バックオフを実装すると、このレートの低下を吸収できます。

IAM 認証の使用方法を示すコードサンプルについては、IAM 認証と転送中の暗号化のコードサンプルをご覧ください。

セキュリティとプライバシー

IAM 認証を使用すると、承認済みの IAM プリンシパルのみが Redis クラスタにアクセスできるようにできます。転送中の暗号化が有効になっていない限り、TLS 暗号化は提供されません。このため、IAM 認証を使用する場合は、転送中の暗号化を有効にすることをおすすめします。

Compute Engine VM を使用して接続する

Compute Engine VM を使用して IAM 認証を使用するインスタンスに接続する場合は、プロジェクトで次のアクセス スコープと API を有効にする必要があります。