このページでは、顧客管理の暗号鍵(CMEK)を使用して AML AI インスタンスに保存されているデータを暗号化する方法について説明します。
概要
AML AI インスタンス内のすべての顧客データは、保存時に CMEK 鍵を使用して暗号化されます。鍵は Cloud Key Management Service 内で管理し、鍵へのアクセスは Identity and Access Management を使用して制御します。CMEK 鍵を一時的に無効にするか、完全に破棄すると、その鍵で暗号化されたデータにアクセスできなくなります。
CMEK を使用すると、鍵のライフサイクルと管理をより幅広く制御できますが、Cloud KMS サービスの追加費用も発生します。
Cloud KMS は、AML AI と同じ Google Cloud プロジェクトで実行することも、複数のプロジェクトで使用する鍵を一元的に管理する別のプロジェクトで実行することもできます。
CMEK 鍵は、インスタンスを作成するときに割り当てます。すべてのインスタンスは CMEK を使用して構成する必要があります。Google のデフォルト暗号化を使用するように変更することはできません。
CMEK の一般的な用途や使用する理由などの詳細については、Cloud KMS のドキュメントをご覧ください。
顧客データ
AML AI によって処理されるすべての顧客データは、対応する親インスタンス リソースで指定された CMEK 鍵を使用して保存時に暗号化されます。これには、AML AI リソースに関連付けられたすべての顧客データ(データセット、エンジン構成、モデルなど)が含まれます。入力と出力のコピー、生成された ML 特徴、ログ、モデルのハイパーパラメータ、モデルの重み付け、予測結果など、お客様データの一時的および永続ストレージはすべて、対応するインスタンスの CMEK 鍵を使用して暗号化されます。
AML AI は、Google Cloud プロジェクトの入力データまたは出力データの暗号化を管理しません。このデータを暗号化する場合は、Google Cloud プロジェクトに別の CMEK 鍵を設定する必要があります。インスタンスで指定された KMS 鍵は、AML AI リソースとそのデータに使用されます。
鍵の作成と権限の付与
次の手順では、インスタンスの鍵を作成し、その鍵を使用してインスタンス データを暗号化および復号する権限を付与する方法について説明します。Cloud KMS で直接作成された鍵または Cloud External Key Manager で利用できる外部管理鍵を使用できます。
鍵を管理する Google Cloud プロジェクトで、次の操作を行います。
projects.locations.keyRings.create
メソッドを使用して鍵リングを作成します。Cloud KMS のキーリングのロケーションは、暗号化するインスタンスのロケーションと一致する必要があります。REST
リクエストのデータを使用する前に、次のように置き換えます。
KMS_PROJECT_ID
: キーリングを含むプロジェクトの Google Cloud プロジェクト IDLOCATION
: キーリングのロケーション。 サポートされているリージョンのいずれかを使用します。3~7 つの店舗を表示us-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
KEY_RING_ID
: キーリングのユーザー定義の識別子
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING_ID"PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING_ID" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
{ "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID", "createTime": CREATE_TIME }
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
LOCATION
: キーリングのロケーション。 サポートされているリージョンのいずれかを使用します。3~7 つの店舗を表示us-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
KEY_RING_ID
: キーリングのユーザー定義の識別子
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud kms keyrings create KEY_RING_ID \ --location LOCATION
Windows(PowerShell)
gcloud kms keyrings create KEY_RING_ID ` --location LOCATION
Windows(cmd.exe)
gcloud kms keyrings create KEY_RING_ID ^ --location LOCATION
$
projects.locations.keyRings.cryptoKeys
メソッドを使用して鍵を作成します。REST
リクエストのデータを使用する前に、次のように置き換えます。
KMS_PROJECT_ID
: キーリングを含むプロジェクトの Google Cloud プロジェクト IDLOCATION
: キーリングのロケーション。 サポートされているリージョンのいずれかを使用します。3~7 つの店舗を表示us-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
KEY_RING_ID
: キーリングのユーザー定義の識別子KEY_ID
: 鍵のユーザー定義の識別子
JSON 本文のリクエスト:
{ "purpose": "ENCRYPT_DECRYPT" }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "purpose": "ENCRYPT_DECRYPT" } EOF
その後、次のコマンドを実行して REST リクエストを送信します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys?crypto_key_id=KEY_ID"PowerShell
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "purpose": "ENCRYPT_DECRYPT" } '@ | Out-File -FilePath request.json -Encoding utf8
その後、次のコマンドを実行して REST リクエストを送信します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys?crypto_key_id=KEY_ID" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
{ "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID", "primary": { "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID/cryptoKeyVersions/1", "state": "ENABLED", "createTime": CREATE_TIME, "protectionLevel": "SOFTWARE", "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION", "generateTime": GENERATE_TIME }, "purpose": "ENCRYPT_DECRYPT", "createTime": CREATE_TIME, "versionTemplate": { "protectionLevel": "SOFTWARE", "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION" }, "destroyScheduledDuration": "86400s" }
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
LOCATION
: キーリングのロケーション。 サポートされているリージョンのいずれかを使用します。3~7 つの店舗を表示us-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
KEY_RING_ID
: キーリングのユーザー定義の識別子KEY_ID
: 鍵のユーザー定義の識別子
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud kms keys create KEY_ID \ --keyring KEY_RING_ID \ --location LOCATION \ --purpose "encryption"
Windows(PowerShell)
gcloud kms keys create KEY_ID ` --keyring KEY_RING_ID ` --location LOCATION ` --purpose "encryption"
Windows(cmd.exe)
gcloud kms keys create KEY_ID ^ --keyring KEY_RING_ID ^ --location LOCATION ^ --purpose "encryption"
$
AML AI プロジェクトで AML AI インスタンスを作成していない場合、AML AI サービス アカウントはまだ存在しません。サービス アカウントを作成します。
後述のコマンドデータを使用する前に、次のように置き換えます。
PROJECT_ID
: AML AI が実行されているプロジェクトの Google Cloud プロジェクト ID
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
Windows(PowerShell)
gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
Windows(cmd.exe)
gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
次のようなレスポンスが返されます。
Service identity created: service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com
AML AI サービス アカウントに CryptoKey Encrypter/Decrypter IAM ロール(
roles/cloudkms.cryptoKeyEncrypterDecrypter
)を付与します。作成した鍵にこの権限を付与します。後述のコマンドデータを使用する前に、次のように置き換えます。
PROJECT_ID
: AML AI が実行されているプロジェクトの Google Cloud プロジェクト IDKEY_ID
: キーリングのユーザー定義の識別子LOCATION
: キーリングのロケーション。 サポートされているリージョンのいずれかを使用します。3~7 つの店舗を表示us-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
KEY_RING_ID
: キーリングのユーザー定義の識別子PROJECT_NUMBER
: AML AI が実行されているプロジェクトの Google Cloud プロジェクト番号
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID \ --location LOCATION --keyring=KEY_RING_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Windows(PowerShell)
gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID ` --location LOCATION --keyring=KEY_RING_ID ` --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com ` --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Windows(cmd.exe)
gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID ^ --location LOCATION --keyring=KEY_RING_ID ^ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com ^ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
次のようなレスポンスが返されます。
Updated IAM policy for key KEY_ID. bindings: - members: - serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter etag: BwYCq0Sq4Ho= version: 1
このコマンドの詳細については、gcloud kms keys add-iam-policy-binding のドキュメントをご覧ください。
これで、インスタンスを作成し、暗号化に使用する鍵を指定できるようになりました。
アクセス権の削除
CMEK で暗号化されたインスタンスへのアクセスを削除する方法はいくつかあります。
- Google Cloud コンソール または gcloud CLIを使用して、AML AI サービス アカウントから Cloud KMS CryptoKey の暗号化/復号のロールを取り消します。
- CMEK 鍵を一時的に無効にする。
- CMEK 鍵を完全に破棄する。
鍵を無効化または破棄する前に、AML AI サービス アカウントから権限を取り消すことをおすすめします。権限の変更は数秒以内に伝播されるため、鍵の無効化や破棄の影響を確認できます。
インスタンスの暗号鍵を無効化または破棄すると、インスタンス データの表示や取得ができなくなります。データセット、モデル、エンジン構成、バックテスト結果、予測結果などの API リソースを含む、インスタンスに保存されているすべてのデータにアクセスできなくなります。AML AI 閲覧者のロールを持つユーザーは、インスタンス名などのインスタンス メタデータを引き続き表示できます。
AML AI 管理者ロールまたはオーナー ロールを持つユーザーはインスタンスを削除できます。
CMEK の組織のポリシー
AML AI は CMEK の組織ポリシーをサポートしていません。ただし、AML AI では、constraints/gcp.restrictNonCmekServices
組織のポリシーに関係なく、常に CMEK の使用が必要です。
次のステップ
- インスタンスを作成する
- CMEK の詳細を確認する
- Google のデフォルトの暗号化の詳細を確認する。