鍵管理システム(KMS)は、暗号化、復号、署名、検証などの暗号オペレーション用にさまざまな種類の鍵をサポートしています。使用可能な鍵のタイプとアルゴリズムの詳細については、サポートされている鍵をご覧ください。
このページは、Google Distributed Cloud(GDC)エアギャップ内で鍵管理オペレーションを実行する DevOps チームなどのアプリケーション オペレーター グループ内のユーザーを対象としています。詳細については、GDC エアギャップの対象ユーザーに関するドキュメントをご覧ください。
始める前に
鍵を作成して管理するには、必要な権限をリクエストして環境を準備します。
IAM ロールをリクエストする
組織の IAM 管理者に連絡して、プロジェクトの Namespace で次のロールを付与してもらいます。
- KMS 作成者(
kms-creator): プロジェクト内のAEADKeyリソースとSigningKeyリソースを表示して作成します。 - KMS 管理者(
kms-admin): プロジェクト内の鍵の表示、作成、削除。
環境を準備する
gdcloud CLI をインストールして初期化します(まだ行っていない場合)。
gdcloud CLI を使用して GDC を認証します。このプロセスでは、組織のコンソールの認証局(CA)証明書が必要です。
CA 証明書をダウンロードします。
echo -n | openssl s_client -showcerts -connect CONSOLE_URL:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > CA_CERT_PATH次のように置き換えます。
CONSOLE_URL: 組織のコンソール URL(console.org-1.zone1.google.gdch.testなど)CA_CERT_PATH: CA 証明書ファイルを保存するフルパス(/tmp/my-org-ca.crtなど)
ダウンロードした CA 証明書を使用してログインします。
gdcloud auth login --login-config-cert=CA_CERT_PATH
gdcloud CLI を使用して、Management API サーバーの kubeconfig ファイルを取得します。
鍵を作成する
さまざまな暗号目的の鍵を作成できます。
AEAD 鍵を作成する
関連データを使用した認証付き暗号化(AEAD)を実行するには、プロジェクトの Namespace に AEADKey リソースを作成します。
kubectl --kubeconfig KUBECONFIG_PATH \
apply -f - << EOF
apiVersion: "kms.gdc.goog/v1"
kind: AEADKey
metadata:
name: KEY_NAME
namespace: PROJECT
spec:
algorithm: AES_256_GCM
EOF
次のように置き換えます。
KUBECONFIG_PATH: Management API サーバーの kubeconfig ファイルへのパスKEY_NAME: 作成する AEAD 鍵の名前(例:key-1)PROJECT: プロジェクトの名前(例:kms-test1)
署名鍵を作成する
データを署名して検証するには、プロジェクトの Namespace に SigningKey リソースを作成します。
kubectl --kubeconfig KUBECONFIG_PATH \
apply -f - << EOF
apiVersion: "kms.gdc.goog/v1"
kind: SigningKey
metadata:
name: KEY_NAME
namespace: PROJECT
spec:
algorithm: EC_SIGN_P384_SHA384
EOF
次のように置き換えます。
KUBECONFIG_PATH: Management API サーバーの kubeconfig ファイルへのパスKEY_NAME: 作成する署名鍵の名前(例:key-1)PROJECT: プロジェクトの名前(例:kms-test1)
鍵の作成を確認する
鍵を作成したら、オペレーションが成功し、鍵リソースが準備できていることを確認します。
AEAD 鍵の作成を確認する
AEAD 鍵のステータスを確認します。
kubectl --kubeconfig KUBECONFIG_PATH \
get aeadkey KEY_NAME \
--namespace=PROJECT -o yaml
次のように置き換えます。
KUBECONFIG_PATH: Management API サーバーの kubeconfig ファイルへのパスKEY_NAME: 検証する AEAD 鍵の名前(例:key-1)PROJECT: プロジェクトの名前(例:kms-test1)
鍵の作成が成功した場合は、ステータスが True の Ready 条件が出力されていることを確認します。
署名鍵の作成を確認する
署名鍵のステータスを確認します。
kubectl --kubeconfig KUBECONFIG_PATH \
get signingkey KEY_NAME \
--namespace=PROJECT -o yaml
次のように置き換えます。
KUBECONFIG_PATH: Management API サーバーの kubeconfig ファイルへのパスKEY_NAME: 検証する署名鍵の名前(例:key-1)PROJECT: プロジェクトの名前(例:kms-test1)
鍵の作成が成功した場合は、ステータスが True の Ready 条件が出力されていることを確認します。
キーを削除する
鍵リソースを削除するには、鍵のタイプと名前を指定します。
プロジェクトの Namespace でキーを削除します。
kubectl --kubeconfig KUBECONFIG_PATH \ delete KEY_PRIMITIVE KEY_NAME \ --namespace=PROJECT次のように置き換えます。
KUBECONFIG_PATH: Management API サーバーの kubeconfig ファイルのパスKEY_PRIMITIVE: 削除する鍵リソースのタイプ(AEAD 鍵の場合はaeadkey、署名鍵の場合はsigningkeyなど)KEY_NAME: 削除する鍵の名前(例:key-1)。PROJECT: プロジェクトの名前(例:kms-test1)。
鍵の削除を確認するには、鍵の取得を試みます。
kubectl --kubeconfig KUBECONFIG_PATH \ get KEY_PRIMITIVE KEY_NAME \ --namespace=PROJECT鍵が正常に削除された場合、コマンドは鍵オブジェクトを返しません。