基本的なトークンベースの認証を使用してインスタンスへのアクセスを保護する

Identity and Access Management(IAM)認証に加えて、 基本的なトークンベースの認証を使用して、 Memorystore for Valkey インスタンスへのアクセスを保護できます。軽量ソリューションとして、基本的なトークンベースの認証を使用すると、クライアントはトークンを使用してアプリケーション内で ID を確認できます。

基本的なトークンベースの認証では、リソース要件が最小限で、リソースのオーバーヘッドが少なくなります。また、Memorystore for Redis またはオンプレミス アプリケーションの現在のワークロードで基本的なトークンベースの認証がすでに使用されている場合、この機能を使用すると、Memorystore for Valkey への移行をスムーズに行うことができます。

特典

基本的なトークンベースの認証を使用すると、次のメリットが得られます。

  • 柔軟性: 新規および既存のインスタンスで、いつでも認証を有効にできます。基本的なトークンベースの認証を有効にすると、インスタンスが保護されます。すべての新しい接続で、ユーザーはインスタンスに認証するための認証トークンを提供する必要があります。
  • ダウンタイムなしのローテーション: アプリケーションにダウンタイムを引き起こすことなく、ユーザー トークンをローテーションします。
  • 互換性: default スーパーユーザーは、このユーザーに付与されている権限と同じ権限を維持します。基本的なトークンベースの認証により、保護が強化されます。これにより、ワークロードを Memorystore for Redis から Memorystore for Valkey に移行する際の下位互換性が確保されます。

認証モード

基本的なトークンベースの認証では、次の 2 つの主要な認証モードがサポートされています。

  • シンプルな認証: ユーザーが 認証トークンを送信して、default ユーザーとして認証する簡単な方法
  • マルチユーザー認証: 複数のユーザーを管理して、 インスタンスへのアクセスを認証する

ベスト プラクティス

セキュリティ上の理由から、基本的なトークンベースの認証には次のベスト プラクティスを使用することをおすすめします。

  • ユーザー トークンをローテーションする: ユーザー トークンにローテーション ポリシーを使用します 。
  • Secret Manager を使用する: ユーザーの基本的なトークンベースの 認証情報をアプリケーション コードにハードコードしないでください。代わりに、 Secret Manager に保存して、 実行時に取得します。

    Secret Manager は、ユーザー認証情報の一元化された暗号化されたボールトを提供します。これにより、シークレットの拡散を排除し、認証情報を手動で管理する運用上のオーバーヘッドを削減できます。IAM を使用してアクセス制御を適用し、監査ログを自動的に生成します。これにより、コンプライアンスが確保され、認証情報の漏洩を防ぐことができます。

  • 基本的なトークンベースの認証と Transport Layer Security(TLS)を組み合わせる: 基本的なトークンベースの認証を使用する場合は、転送中の暗号化を有効にすることをおすすめします。これにより、ユーザー名と認証トークンがネットワーク上で平文で送信されることがなくなります。

始める前に

基本的なトークンベースの認証を使用してインスタンスを保護する前に、このセクションの前提条件を満たしてください。

クライアントが基本的なトークンベースの認証をサポートしていることを確認する

クライアント アプリケーションが基本的なトークンベースの認証をサポートできることを確認するには、アプリケーションで AUTH コマンドを使用できることを確認します。

default ユーザーは、次のコマンドを使用してクライアント アプリケーションに対して認証を行います。

AUTH TOKEN

このコマンドでは、TOKEN はデフォルト ユーザーの認証トークンです。

他のすべてのユーザーは、次のコマンドを使用して認証を行います。

AUTH USERNAME TOKEN

このコマンドでは、USERNAMETOKEN はユーザーの ユーザー名と認証トークンです。

AUTH コマンドの詳細については、Valkey ドキュメントの AUTH をご覧ください。

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

コンソール、gcloud CLI、API を使用する手順は次のとおりです。 Google Cloud

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

    プロジェクトの選択に移動

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

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

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

ロールを割り当てる

インスタンスに対して基本的なトークンベースの認証を構成するには、 プロジェクトに次のいずれかのIAM ロール が必要です。 Google Cloud

  • roles/memorystore.admin(Memorystore 管理者ロール)
  • roles/owner(オーナーロール)
  • roles/editor(編集者ロール)

インスタンスの基本的なトークンベースの認証を管理する

Memorystore for Valkey は、インスタンスの基本的なトークンベースの認証を管理するために次のアクションをサポートしています。

基本的なトークンベースの認証を使用してインスタンスを作成する

基本的なトークンベースの認証を使用してインスタンスを作成すると、ユーザーのインスタンスへのアクセスを制限する軽量で広くサポートされている方法を利用できます。

インスタンスは、gcloud CLI を使用して作成できます。

基本的なトークンベースの認証が有効になっているインスタンスを作成するには、 gcloud beta memorystore instances create コマンドを使用します。

gcloud beta memorystore instances create INSTANCE_ID \
--location=REGION \
--authorization-mode=token-auth

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

  • INSTANCE_ID: 基本的なトークンベースの認証を使用するために作成するインスタンスの ID
  • REGION: インスタンスを配置するリージョン

インスタンスの基本的なトークンベースの認証を有効にする

インスタンスの基本的なトークンベースの認証を有効にすると、ユーザーのインスタンスへのアクセスを制限する軽量で広くサポートされている方法を利用できます。

default ユーザーは、トークンのみを使用してインスタンスに対して認証できます。他のすべてのユーザーは、標準のユーザー名とトークンを使用して認証を行います。詳細については、クライアントが基本的なトークンベースの認証をサポートしていることを確認するをご覧ください。

基本的なトークンベースの認証を有効にすると、Memorystore for Valkey で認証済みリクエストが必要になるため、新しい接続を作成しようとするアプリケーションでダウンタイムが発生する可能性があります。既存の接続は影響を受けませんが、インスタンスへの以降の接続試行で基本的なトークンベースの認証を使用するには、アプリケーションを更新する必要があります。詳細については、 基本的なトークンベースの認証を使用してインスタンスに接続するをご覧ください。

gcloud CLI を使用して、インスタンスの基本的なトークンベースの認証を有効にできます。

基本的なトークンベースの認証を有効にするには、gcloud beta memorystore instances update コマンドを使用します。

gcloud beta memorystore instances update INSTANCE_ID \
--location=REGION \
--authorization-mode=token-auth

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

  • INSTANCE_ID: 基本的なトークンベースの認証を有効にするインスタンスの ID
  • REGION: インスタンスが配置されているリージョン

インスタンスの基本的なトークンベースの認証ユーザーを作成する

インスタンスの基本的なトークンベースの認証ユーザーを作成すると、マルチユーザー認証を許可するようにインスタンスが構成されます。ユーザーが最初にログインすると、この認証モードは新しい接続の安全で取り消し可能な認証情報として機能します。ユーザーは、認証トークンを削除するか、ユーザーが削除されるまで、認証トークンを使用できます。

基本的なトークンベースの認証ユーザーは、gcloud CLI を使用して作成できます。

ユーザーを作成するには、gcloud beta memorystore instances create-token-auth-user コマンドを使用します。

gcloud beta memorystore instances create-token-auth-user INSTANCE_ID \
--location=REGION \
--token-auth-user=USERNAME

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

  • INSTANCE_ID: 基本的なトークンベースの認証ユーザーを作成するインスタンスの ID
  • REGION: インスタンスが配置されているリージョン
  • USERNAME: ユーザーのユーザー名

インスタンスの基本的なトークンベースの認証ユーザーを一覧表示する

gcloud CLI を使用して、インスタンスの基本的なトークンベースの認証ユーザーのリストを取得できます。

ユーザーを一覧表示するには、gcloud beta memorystore instances token-auth-users list コマンドを使用します。

gcloud beta memorystore instances token-auth-users list \
--instance=INSTANCE_ID \
--location=REGION

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

  • INSTANCE_ID: 基本的なトークンベースの認証ユーザーのリストを取得するインスタンスの ID
  • REGION: インスタンスが配置されているリージョン

基本的なトークンベースの認証ユーザーに関する情報を表示する

基本的なトークンベースの認証ユーザーに関する情報は、 gcloud CLI を使用して表示できます。

ユーザーに関する情報を表示するには、gcloud beta memorystore instances token-auth-users describe コマンドを使用します。

gcloud beta memorystore instances token-auth-users describe USERNAME \
--instance=INSTANCE_ID \
--location=REGION

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

  • USERNAME: 情報を表示する基本的なトークンベースの認証ユーザー のユーザー名
  • INSTANCE_ID: ユーザーが認証できるインスタンスの ID
  • REGION: インスタンスが配置されているリージョン

インスタンスから基本的なトークンベースの認証ユーザーを削除する

インスタンスから基本的なトークンベースの認証ユーザーを削除すると、ユーザーのインスタンスへのアクセス権が取り消されます。

インスタンスから基本的なトークンベースの認証ユーザーを削除するには、 gcloud CLIを使用します。

ユーザーを削除するには、gcloud beta memorystore instances token-auth-users delete コマンドを使用します。

gcloud beta memorystore instances token-auth-users delete USERNAME \
--instance=INSTANCE_ID \
--location=REGION

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

  • USERNAME: 基本的なトークンベースの認証ユーザーのユーザー名
  • INSTANCE_ID: ユーザーを削除するインスタンスの ID
  • REGION: インスタンスが配置されているリージョン

削除するユーザーの場合、Memorystore for Valkey は既存の接続を終了しません。これらの接続を終了するには、インスタンス内のすべてのノードで次のコマンドを実行します。

CLIENT KILL USER USERNAME

ユーザーの基本的なトークンベースの認証を管理する

Memorystore for Valkey は、ユーザーの基本的なトークンベースの認証を管理するために次のアクションをサポートしています。

ユーザーの認証トークンを作成する

ユーザーの認証トークンを作成すると、ユーザーの既存のトークンをアプリケーションのダウンタイムを引き起こすことなく、ローテーション できます。

ユーザーの認証トークンは、gcloud CLI を使用して作成できます。

ユーザーを作成するには、gcloud beta memorystore instances token-auth-users create-auth-token コマンドを使用します。

gcloud beta memorystore instances token-auth-users create-auth-token USERNAME \
--instance=INSTANCE_ID \
--location=REGION

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

  • USERNAME: 認証トークンを作成するユーザーの ユーザー名
  • INSTANCE_ID: ユーザーがトークンを使用してアクセスできるインスタンスの ID
  • REGION: インスタンスが配置されているリージョン

ユーザーの認証トークンを一覧表示する

ユーザーの認証トークンのリストは、gcloud CLI を使用して取得できます。

トークンを一覧表示するには、gcloud beta memorystore instances token-auth-users auth-tokens list コマンドを使用します。

gcloud beta memorystore instances token-auth-users auth-tokens list \
--token-auth-user=USERNAME \
--instance=INSTANCE_ID \
--location=REGION

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

  • USERNAME: 認証トークンが属するユーザーのユーザー名
  • INSTANCE_ID: ユーザーが認証トークンを使用して アクセスできるインスタンスの ID
  • REGION: インスタンスが配置されているリージョン

ユーザーの認証トークンに関する情報を表示する

ユーザーの認証トークンに関する情報は、gcloud CLI を使用して表示できます。

情報を表示するには、gcloud beta memorystore instances token-auth-users auth-tokens describe コマンドを使用します。

gcloud beta memorystore instances token-auth-users auth-tokens describe AUTH_TOKEN \
--instance=INSTANCE_ID \
--location=REGION \
--token-auth-user=USERNAME

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

  • AUTH_TOKEN: 情報を表示する認証トークンの名前
  • INSTANCE_ID: ユーザーがトークンを使用してアクセスできるインスタンスの ID
  • REGION: インスタンスが配置されているリージョン
  • USERNAME: 認証トークンが属するユーザーのユーザー名

ユーザーから認証トークンを削除する

ユーザーから認証トークンを削除することは、トークンを無効にする重要なセキュリティ アクションです。

ユーザーから認証トークンを削除するには、 gcloud CLI を使用します。

トークンを削除するには、gcloud beta memorystore instances token-auth-users auth-tokens delete コマンドを使用します。

gcloud beta memorystore instances token-auth-users auth-tokens delete AUTH_TOKEN \
--instance=INSTANCE_ID \
--location=REGION \
--token-auth-user=USERNAME

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

  • AUTH_TOKEN: ユーザーから削除する認証トークンの名前
  • INSTANCE_ID: トークンを削除してユーザーがアクセスできないようにする インスタンスの ID
  • REGION: インスタンスが配置されているリージョン
  • USERNAME: 削除したいトークンを持つユーザーのユーザー名

基本的なトークンベースの認証を使用してインスタンスに接続する

基本的なトークンベースの認証を使用してインスタンスに接続するには、次の方法を使用します。

  • Uniform Resource Identifier(URI)文字列: 必要な接続情報(ユーザーのユーザー名と認証トークン、インスタンスの IP アドレスとホスト名など)が 1 つの文字列に含まれているため、この単一の形式の文字列は利便性のために使用されます。
  • フラグ: この方法は、個々のコマンドライン ツール 、スクリプト、または複数の個別の引数を使用して構成が 個別の環境変数に分割される環境に適しています。

以降のセクションでは、各接続方法について説明します。

URI 文字列を使用する

URI 文字列を使用して Compute Engine VM または サポートされている環境から接続するには、次のコマンドを使用します。

valkey-cli -u
redis://USERNAME:TOKEN@IP_ADDRESS:PORT

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

  • USERNAME: インスタンスに接続しようとしているユーザーのユーザー名
  • TOKEN: ユーザーの認証トークン
  • IP_ADDRESS: インスタンスの IP アドレス
  • PORT: インスタンス用に予約されているポート番号

フラグを使用する

フラグを使用して Compute Engine VM またはサポートされている環境から接続するには、次のコマンドを使用します。

valkey-cli --user USERNAME -a TOKEN -h IP_ADDRESS -p PORT

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

  • USERNAME: インスタンスに接続しようとしているユーザーのユーザー名
  • TOKEN: ユーザーの認証トークン
  • IP_ADDRESS: インスタンスの IP アドレス
  • PORT: インスタンス用に予約されているポート番号

ダウンタイムなしでユーザーの認証トークンをローテーションする

アプリケーションのダウンタイムを引き起こすことなくユーザーの認証トークンをローテーションするには、次の操作を行います。

  1. ユーザーの追加の認証トークンを作成する: Memorystore for Valkey は 2 つ目の有効なトークンを生成します。どちらのトークンも有効です。
  2. アプリケーションを更新する: 新しいトークンを使用するようにアプリケーションを更新します。
  3. ユーザーの認証トークンを削除する: Memorystore for Valkey は最初のトークンを削除します。ユーザーは 2 つ目のトークンのみを使用してアプリケーションに認証できます。

基本的なトークンベースの認証のアクセスログ

Memorystore for Valkey は、認証トークンとユーザーに関連付けられたオペレーションの管理アクティビティとデータアクセス監査ログを生成します。これらの監査ログの詳細については、監査ログを使用したアクセスのモニタリングをご覧ください。