クライアント アプリケーションと Memorystore for Valkey の間で移動するすべてのデータを安全に暗号化できます。これは転送データの暗号化です。 転送データの 暗号化を使用すると、すべての Valkey トラフィックがTransport Layer Security(TLS)プロトコルで暗号化されます。これにより、アプリケーションと Memorystore for Valkey の間で移動するすべてのデータの機密性と完全性が維持されます。
転送データの暗号化が有効になっている場合、Valkey クライアントは安全な接続を介してのみ通信を行います。TLS 用に構成されていない Valkey クライアントはブロックされます。転送データの暗号化を使用する場合は、Valkey クライアントが TLS プロトコルを使用できることを確認する必要があります。
転送データの暗号化を使用するインスタンスには認証局(CA)があります。CA を使用して、インスタンス内のマシンの証明書を認証します。
使用できる CA モードの 1 つに、顧客管理の CA があります。Memorystore for Valkey インスタンスに顧客管理の CA を使用できます。コンプライアンス上の理由から独自の CA を 管理する必要がある場合は、この CA モードを使用できます。このモードを使用するには、 Certificate Authority Service でホストされている独自の CA プールを設定する必要があります。
顧客管理の CA を使用するようにインスタンスを構成する前に、CA Service を使用して、インスタンスと同じリージョンに CA プールを作成し、そのプールに 1 つ以上の CA を作成する必要があります。作成する CA は、ルート CA でも 下位 CA でもかまいません。 CA Service で下位 CA を作成して、外部ルート CA に連結することもできます。
インスタンスを作成するときに、作成した CA プールを指定します。この構成の一環として、プロジェクト固有の Memorystore for Valkey サービス アカウントには、CA プールを使用する権限が付与されます。サービス アカウントがプールから CA をリクエストし、Memorystore for Valkey はその CA を使用してインスタンスのサーバー証明書に署名します。
始める前に
顧客管理の CA モードを使用する前に、次の要件を満たしていることを確認してください。
必要なロール
CA プールと CA の作成に必要な権限を取得するには、CA Service に対する CA Service オペレーション マネージャー(roles/privateca.caManager)IAM ロールを付与するよう管理者に依頼してください。
必要な権限は、カスタムロール や他の事前定義ロールから取得することもできます。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
顧客管理の CA を使用するワークフロー
顧客管理の CA を使用するワークフローは次のとおりです。
- CA プールを作成します。顧客管理の CA を使用するようにインスタンスを構成する前に、CA Service で CA プールを作成する必要があります。このプールは、インスタンスと同じリージョンに配置する必要があります。
- CA プールに CA を作成します。CA プールを作成したら、CA Service を使用してプールに少なくとも 1 つの CA を作成する必要があります。
- 作成した CA プールの CA を使用してサーバー証明書を発行する権限を Memorystore for Valkey サービス アカウントに委任します 。
- 顧客管理の CA を使用する インスタンスを作成します。
CA プールを作成する
CA プールは、Memorystore for Valkey インスタンスを作成するプロジェクトと同じプロジェクトに作成することも、別のプロジェクトに作成することもできます。ただし、CA プールを別のプロジェクトに作成すると、組織のポリシーによっては、VPC Service Controls によってインスタンスの作成がブロックされる場合があります。この問題を解決するには、CA プールと CA をホストするプロジェクトと、Memorystore for Valkey をホストするプロジェクトが同じサービス境界に属していることを確認します。詳細については、サービス境界の詳細と構成とサービス境界を管理するをご覧ください。
CA プールを作成するには、 CA プールを作成するの手順に沿って操作します。 CA プールのデフォルト値をそのまま使用し、次の必須の構成設定を行います。
- インスタンスを作成する予定のリージョンと同じリージョンに CA プールを作成します。Memorystore for Valkey がサポートするリージョンのリストについては、Memorystore for Valkey のロケーションをご覧ください。
- 構成ベースの証明書リクエストを許可します。
- サブジェクト代替名(SAN)で DNS 名を許可します。CA プールの ID 制約を構成する際に、DNS 名の形式に、Memorystore for Valkey が SAN に追加する内容と競合する可能性がある制限を設定しないでください。
CA プールに CA を作成する
作成した CA プールに少なくとも 1 つの CA を作成します。
ルート CA または下位 CA を作成できます。
ルート CA を作成するには、ルート CA を作成するの手順に沿って操作します。CA のデフォルト値をそのまま使用できますが、CA は [有効] 状態で作成してください。
CA の鍵サイズとアルゴリズムを構成する際には、任意の鍵 サイズとアルゴリズムを選択できます。
下位 CA を作成する場合は、まずルート CA を作成して構成する必要があります。
CA Service で下位 CA を作成するには、 下位 CA を作成するの手順に沿って操作します。
外部ルート CA から下位 CA を作成するには、 外部 CA から下位 CA を作成するの手順に沿って操作します。
サービス アカウントに CA プールへのアクセス権を付与する
Memorystore for Valkey サービス アカウントにインスタンスの証明書をリクエストして署名する権限を付与するには、作成した CA プールに対するサービス アカウントに roles/privateca.certificateRequester ロールを付与します。
このサービス アカウントは次の形式です:
service-PROJECT_NUMBER@cloud-memorystore.iam.gserviceaccount.com. PROJECT_NUMBER は、
プロジェクトのプロジェクト番号に置き換えます。 Google Cloud
gcloud
サービス アカウントに CA プールへのアクセス権を付与するには、gcloud privateca pools add-iam-policy-binding
コマンドを使用します。
gcloud privateca pools add-iam-policy-binding CA_POOL_ID \ --project=PROJECT_ID \ --location=REGION_ID \ --member serviceAccount:SERVICE_ACCOUNT_NAME \ --role=roles/privateca.certificateRequester
次のように置き換えます。
- CA_POOL_ID: 作成した CA プールの ID。
- PROJECT_ID: インスタンスを作成するプロジェクトの ID。 Google Cloud
- REGION_ID: CA プールが配置されているリージョン。
- SERVICE_ACCOUNT_NAME: Memorystore for Valkey サービス アカウントの名前。このサービス アカウントのプロジェクト番号は、 PROJECT_ID に関連付けられているプロジェクト番号と同じです。
顧客管理の CA を使用するインスタンスを作成する
コンソール
インスタンスを作成するの手順に沿って操作します。
gcloud
顧客管理の CA を使用するインスタンスを作成するには、gcloud memorystore instances create コマンドを使用します。
gcloud memorystore instances create INSTANCE_ID \
--location=REGION_ID \
--endpoints='[{"connections": [{"pscAutoConnection": {"network": "projects/PROJECT_ID/global/networks/NETWORK_ID", "projectId": "PROJECT_ID"}}]}]' \
--replica-count=REPLICA_COUNT \
--node-type=NODE_TYPE \
--shard-count=SHARD_COUNT \
--engine-version=ENGINE_VERSION \
--mode=MODE \
--transit-encryption-mode=server-authentication \
--server-ca-mode=customer-managed-cas-ca \
--server-ca-pool="projects/CA_POOL_PROJECT_ID/locations/REGION_ID/caPools/CA_POOL_ID"
次のように置き換えます。
INSTANCE_ID:作成するインスタンスの ID。インスタンス ID は 1 ~ 63 文字にする必要があり、小文字、数字、ハイフンのみ使用できます。先頭は英小文字に、末尾は英小文字または数字にします。
REGION_ID: インスタンスを配置するリージョン。 インスタンスは、作成した CA プール と同じリージョンに作成する必要があります。
PROJECT_ID: インスタンスを作成するプロジェクトの ID。
NETWORK_ID: インスタンスの作成に使用するネットワークの ID。
REPLICA_COUNT: レプリカの数(シャードごと)。使用できる値は
0~5です。NODE_TYPE: ノードタイプ。次の値が利用できます。
shared-core-nanostandard-smallhighmem-mediumhighmem-xlarge
SHARD_COUNT:インスタンス内のシャード数。シャード数によって、インスタンス データを保存するための合計メモリ容量が決定されます。インスタンスの仕様について詳しくは、インスタンスとノードの仕様をご覧ください。
ENGINE_VERSION: インスタンスのバージョン。このパラメータに使用できる値は、
VALKEY_7_2、VALKEY_8_0、VALKEY_9_0です。値を指定しない場合、デフォルト値はVALKEY_9_0です。MODE: インスタンスがクラスタモード有効か クラスタモード無効かを決定します。このフィールドを省略すると、インスタンスはデフォルトでクラスタモード有効になります。詳細については、クラスタモードを有効または無効にするをご覧ください。
CA_POOL_PROJECT_ID: 作成した CA プールの ID。
REGION_ID: CA プールが配置されているリージョン。作成するインスタンスと CA プールは同じリージョンに配置する必要があります。
CA_POOL_ID: 作成した CA プールの ID。
server-ca-mode パラメータは、インスタンスの CA モードを表します。顧客管理の CA の場合、customer-managed-cas-ca
がパラメータの値です。
このパラメータを使用しない場合、デフォルトの CA モードはインスタンス単位になります。
次に例を示します。
gcloud memorystore instances create my-instance \
--location=us-central1 \
--endpoints='[{"connections": [{"pscAutoConnection": {"network": "projects/my-project/global/networks/my-network", "projectId": "my-project"}}]}] \
--replica-count=1 \
--node-type=highmem-medium \
--shard-count=3 \
--engine-version=VALKEY_9_0 \
--mode=CLUSTER \
--transit-encryption-mode=server-authentication \
--server-ca-mode=customer-managed-cas-ca \
--server-ca-pool="projects/my-CA-pool-project/locations/us-central1/caPools/my-CA-pool"
インスタンスのサーバー証明書をローテーションする
Memorystore for Valkey は毎週サーバーサイドの証明書のローテーションを行いますが、必要に応じて証明書をローテーションすることもできます。
gcloud
インスタンス内のすべてのマシンのサーバー証明書をローテーションするには、
gcloud memorystore instances update
コマンドを使用します。
gcloud memorystore instances update INSTANCE_ID \ --location=REGION_ID \ --rotate-server-certificate
次のように置き換えます。
- INSTANCE_ID: サーバー証明書をローテーションするマシンを含むインスタンスの ID
- REGION_ID: インスタンスが配置されているリージョン
次に例を示します。
gcloud memorystore instances update my-instance \ --location=us-central1 \ --rotate-server-certificate
制限事項
Memorystore for Valkey で顧客管理の CA を使用する場合は、次の制限が適用されます。
- インスタンスに顧客管理の CA を構成した後、構成を変更することはできません。たとえば、インスタンスの CA プールの ID を変更することはできません。
- 顧客管理の CA プールを削除したり、CA に関連付けられているサービス アカウントの権限を取り消したりしないでください。削除または取り消しを行うと、サーバー証明書をローテーションできず、有効期限が切れます。その結果、クライアント アプリケーションはインスタンスに接続できなくなります。
トラブルシューティング
このセクションでは、顧客管理の CA を使用するときに発生する可能性のあるエラー メッセージと、これらのメッセージのトラブルシューティングのヒントを示します。
| エラー メッセージ | 原因 | トラブルシューティング |
|---|---|---|
FAILED_PRECONDITION: GetClusterCertificateAuthority not
supported for customer-managed CAs |
顧客管理の CA を使用する場合、 Memorystore for Valkey を使用して CA 証明書を取得することはできません。 | 顧客管理の CA の CA 証明書を取得するには、CA Service を使用する必要があります。 |
Server certificate rotation can only be triggered for
customer-managed CAs. |
インスタンスのサーバー証明書をローテーションしようとしていますが、 インスタンスの CA モードはインスタンス単位または共有です。 | インスタンスに使用するモードが顧客管理でない限り、サーバー証明書をローテーションすることはできません。 |
Invalid format for server CA pool: {CA pool resource}. Expected
projects/{project}/locations/{location}/caPools/{caPool}. |
インスタンスの作成に使用している CA プールの形式が無効です。 | CA プールには、次の形式を使用します: projects/CA_POOL_PROJECT_ID/locations/REGION_ID/ caPools/CA_POOL_ID |
The instance/cluster's server CA pool must be in the same region
as the instance/cluster. CA Pool region: {CA pool region}, Instance/cluster
region: {cluster region}. |
CA プールとは異なるリージョンにあるインスタンスを作成しようとしています。 | 作成するインスタンスと CA プールが同じリージョンにあることを確認します。 |
Request is prohibited by organization's policy for CA Pool
{CA pool ID}. |
CA プールをホストする Google Cloud プロジェクトとインスタンスを ホストするプロジェクトが同じサービス境界にありません。 | プロジェクトが同じサービス 境界に属するように VPC Service Controls を 構成します。 |
Permission privateca.certificates.create denied on {CA pool ID}.
Make sure that you granted the roles/privateca.certificateRequester role
to the service account {P4SA email}. |
Memorystore for Valkey サービス アカウントに、CA プールに対する
roles/privateca.certificateRequester ロールがありません。その結果、Memorystore for Valkey はサーバー証明書を生成できません。 |
サービス アカウントに roles/privateca.certificateRequester ロールを付与します。詳細については、サービス アカウント
に CA プールへのアクセス権を付与するをご覧ください。 |
Resource {CA pool ID} not found. |
Memorystore for Valkey は、インスタンスを作成しようとしたときに指定した CA プールを見つけることができません。 | CA プールのプロジェクト ID、ロケーション、名前を確認します。 |
There are no enabled CAs in the CaPool {CA pool ID}. Please
ensure that there is at least one enabled Certificate Authority to issue a
certificate. |
CA プールで有効になっている CA がありません。Memorystore for Valkey は、インスタンスのサーバー証明書を生成できません。 | CA プールに少なくとも 1 つの CA を作成し、CA が [有効] 状態であることを確認します。 |
Quota exhausted for CA Service. Check quotas
for the project hosting the CA Pool: {CA pool ID}. |
CA プールをホストする Google Cloud プロジェクトで、CA Service の割り当てを超えました。Memorystore for Valkey は、このサービスを必要とするオペレーションを実行できません。 | プロジェクトの CA Service の割り当てを確認します。詳細については、割り当てと上限をご覧ください。 |
server_ca_pool must be provided when server_ca_mode is
SERVER_CA_MODE_CUSTOMER_MANAGED_CAS_CA. |
顧客管理の CA モードを使用するインスタンスを作成しようとしています。ただし、CA プールに関する情報を提供していません。 | CA プールのプロジェクト ID、ロケーション、名前を指定します。 |
server_ca_pool must not be provided when server_ca_mode is not SERVER_CA_MODE_CUSTOMER_MANAGED_CAS_CA. |
インスタンス単位または
共有 CA モードを使用するインスタンスを作成しようとしています。これらの CA モードでは、server_ca_pool
パラメータは使用されません。 |
CA モードが 顧客管理でない限り、このパラメータは使用できません。 |