Key Protect の統合
第2世代
Cloud Databases に保存するデータは、デフォルトでランダムに生成された鍵を使用して暗号化されます。 暗号化キーを管理するには、 IBM Key Protect、独自の鍵のいずれかを使用してデータベースやバックアップを暗号化できます。
まずは、 Key ProtectIBM Cloud アカウントで設定を行ってください。
Key Protect での鍵の作成または追加
Key Protect のインスタンスに移動して、鍵を生成または入力します。
UI でのサービス承認
Key Protect デプロイメントで使用できるように Cloud Databases を許可します。
- IBM Cloud のダッシュボードを開きます。
- メニューバーから、「 管理 」→「 アクセス(IAM) 」をクリックします。
- サイド・ナビゲーションで、**「許可」**をクリックします。
- 「作成」 をクリックします。
- **「ソース・サービス」**メニューで、デプロイメントのサービスを選択します。 例えば、 Databases for PostgreSQL あるいは Databases for MongoDB。
- 「 ソース」サービスのリソースメニュー で、「 すべてのリソース 」を選択します。
- 「ターゲット・サービス」 メニューで、「Key Protect」 を選択します。
- リソースグループとして、 アカウント を選択するか、デフォルト値のままにします。 対象サービス
- ターゲット・サービスの**「インスタンス ID」**メニューで、許可を付与するサービス・インスタンスを選択します。
- リーダー の役割を有効にします。
- 「Bring your own key」(BYOK)を使用するには、「 依存サービスの認証 」セクションで、「 認証の委任を有効にする 」チェックボックスを選択してください。
- 「許可」 をクリックします。
鍵を使用してデプロイメントをプロビジョンする前にサービス許可が存在していない場合は、プロビジョンが失敗します。
より厳格な承認ポリシーを設定したい場合は、明示的なルートキーCRN、または特定の Key Protect インスタンスを対象としてポリシーを設定してください。 Key Protect のキーリングに適用される制限は、現時点ではサポートされていません。
CLI でのサービス認証の付与
- Cloud Databases サービスが、CLI上の Key Protect サービスインスタンスにアクセスできるようにする承認ポリシーを作成します。 すべての引数については、 IAM CLI リファレンス を参照してください。
ibmcloud iam authorization-policy-create <SERVICE-NAME> kms "Reader,AuthorizationDelegator"
鍵を使用してデプロイメントをプロビジョンする前にサービス許可が存在していない場合は、プロビジョンが失敗します。
より厳格な承認ポリシーを設定したい場合は、明示的なルートキーCRN、または特定の Key Protect インスタンスを対象としてポリシーを設定してください。 Key Protect のキーリングに適用される制限は、現時点ではサポートされていません。
REST API によるサービス認証の付与
- Cloud Databases サービスが、IAM REST API を通じて Key Protect サービスインスタンスにアクセスできるようにする承認ポリシーを作成します。
APIのリファレンスの詳細については、「 IAM ポリシー管理 API 」を参照してください。
curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' -d '{
"type": "authorization",
"subjects": [
{
"attributes": [
{
"name": "accountId",
"value": "CUSTOMER_ACCOUNT_ID"
},
{
"name": "serviceName",
"value": "<SERVICE-NAME>"
}
]
}
],
"roles": [
{
"role_id": "crn:v1:bluemix:public:iam::::serviceRole:Reader"
},
{
"role_id": "crn:v1:bluemix:public:iam::::role:AuthorizationDelegator"
}
],
"resources": [
{
"attributes": [
{
"name": "accountId",
"operator": "stringEquals",
"value": "CUSTOMER_ACCOUNT_ID"
},
{
"name": "serviceName",
"operator": "stringEquals",
"value": "kms"
}
]
}
]
}'
鍵を使用してデプロイメントをプロビジョンする前にサービス許可が存在していない場合は、プロビジョンが失敗します。
より厳格な承認ポリシーを設定したい場合は、明示的なルートキーCRN、または特定の Key Protect インスタンスを対象としてポリシーを設定してください。 Key Protect のキーリングに適用される制限は、現時点ではサポートされていません。
Key Protect キーの使用方法
鍵を使用する許可を Cloud Databases デプロイメントに付与した後、デプロイメントをプロビジョンするときに鍵の名前または CRN を指定します。 このデプロイメントは暗号鍵を使用してデータを暗号化します。
プロビジョニング時のUIで「 Key Protect 」キーを使用する
カタログページからプロビジョニングを行う場合は、ドロップダウンメニューから Key Protect のインスタンスとキーを選択してください。
プロビジョニング時にCLIで Key Protect キーを使用する
CLI では、parameters JSON オブジェクト内の dataservices.encryption.disk パラメータを使用して、サービスインスタンスにルートキーの CRN を割り当てます。
ibmcloud resource service-instance-create <INSTANCE-NAME> <SERVICE-NAME> <PLAN-NAME> REGION -p '{"dataservices":{"encryption":{"disk":"KMS_KEY_CRN"}}}'
Key Protect キーは、IDだけでなく、完全なCRNで識別する必要があります。 Key Protect のCRNは、 crn:v1:<...>:key:<id> という形式です。
プロビジョニング時のAPIで Key Protect キーを使用する
APIでは、リクエスト本文に dataservices.encryption.disk パラメータを指定してください。
curl -X POST https://resource-controller.cloud.ibm.com/v2/resource_instances -H "Authorization: Bearer <IAM token>" -H 'Content-Type: application/json' -d '{
"name": "<INSTANCE-NAME>",
"target": "ca-mon",
"resource_group": "<A RESOURCE GROUP GUID>",
"resource_plan_id": "<A PLAN ID>",
"parameters": {
"dataservices": {
"encryption": {
"disk": "KMS_KEY_CRN"
}
}
}
Key Protect キーは、IDだけでなく、完全なCRNで識別する必要があります。 Key Protect のCRNは、 crn:v1:<...>:key:<id> という形式です。
鍵のローテーション
Key Protect 手動および自動の キーローテーション 機能を提供しており、 Cloud Databases の展開環境ではキーローテーションがサポートされています。 鍵をローテートすると、プロセスは _KMS 状態の同期中_タスクを開始し、デプロイメントは新しい鍵で再暗号化されます。 このタスクは、デプロイメントの「 概要 」にある 「タスク 」ページに表示され、関連する Key Protect および Cloud Databases イベントが Activity Tracker に送信されます。
詳細については、「 手動または自動での回転 」を参照してください。
デプロイメントの削除
Key Protect キーで保護されているデプロイメントを削除した場合、そのデプロイメントはソフト削除期間(最大9日間)の間、そのキーに対して登録されたままとなります。 ソフト削除期間中にキーを削除するには、そのキーを 強制削除してください。 ソフト削除期間が経過すると、その鍵は強制しなくても削除できます。 キーをいつ削除できるかを確認するには、 そのキーとデプロイメントとの関連性を 確認してください。
暗号の廃棄
暗号の廃棄は破壊アクションです。 鍵が削除されると、データはリカバリー不能になります。
Key Protect これにより、 IBM Cloud® サービス(第2世代 Cloud Databases の展開を含む)で使用中のキーを 強制削除することができます。 このアクションは暗号の廃棄と呼ばれます。 デプロイメントで使用中の鍵を削除すると、データが含まれているディスクがロックされ、そのデプロイメントが無効化されます。 UI や、UI、CLI、API
のセキュリティー設定などの一部のメタデータには引き続きアクセスできますが、データベースやそこに含まれているデータにはアクセスできません。 キーの削除は、 kms.secrets.delete として Activity Tracker Event Routing に送信 されます。
バックアップ用のBring your own key
Key Protect を使用する場合、データベースをプロビジョニングする際に、デプロイメントのバックアップが格納される IBM® Cloud Block Storage for Virtual Private Cloud ディスクを暗号化するためのキーを指定することもできます。
バックアップは、データベースと同じ暗号化キーを引き継ぎます。 データベースからバックアップを作成する際、別の暗号化キーを指定することはできません。
委任許可の付与
デプロイメントで Key Protect キーを使用できるようにするには、サービスの承認を付与する際に「 承認の委任を有効にする 」設定を行う必要があります。 鍵を使用してデプロイメントをプロビジョンする前に委任許可が存在していない場合は、プロビジョンが失敗します。
委任を有効にしてデプロイメントをプロビジョンすると、IAM の_許可_に 2 つのエントリーが表示されます。 その 1 つは、委任者として状況をリストするデプロイメントに関するエントリーです。 このエントリーは「作成したユーザー (User Created)」です。
| 役割 | ソース | ターゲット | タイプ |
|---|---|---|---|
| 許可委任者、リーダー | <cloud-databases>サービス |
Key Protect サービス | ユーザー定義 |
また、サービスインスタンスとそのバックアップ(存在する場合)に関する「 Block Storage for VPC 」ボリュームについても、デプロイメントがイニシエーターとなります。
| 役割 | ソース | ターゲット | タイプ |
|---|---|---|---|
| リーダー | Block Storage for VPC サービス | Key Protect サービス | 作成者<cloud-databases-crn> |
鍵の削除
IAM/ Key Protect では、キーと Block Storage for VPC の間にあるポリシーを削除すること自体は妨げられませんが(2番目の例)、そうするとトピックやパーティションが復元できなくなる可能性があります。
よくある落とし穴
キーと許可を削除する場合は注意してください。 同じキーを使用するデプロイメントが複数ある場合、委任の承認を取り消すことで、それらのデプロイメントすべてのデータが意図せず破棄されてしまう可能性があります。 可能であれば、複数のデプロイで同じキーを使用しないでください。
インスタンスに関連付けられたデータを完全に消去したい場合は、キーを削除してください。 Block Storage for VPC を実行することで、ストレージが読み取り・書き込み不可の状態になります。 ただし、その同じ鍵を使用している他のデプロイ(またはそのバックアップ)では、その後エラーが発生することになります。
複数のデプロイやバックアップで同じキーを使用する必要がある場合、キーや承認を削除すると、次のような副作用が生じる可能性があります。 (表2に示されているように) Block Storage for VPC のボリューム認証情報を削除すると、作成者として表示されているデプロイメントだけでなく、同じキーを使用している他のすべてのデプロイメントにも影響が及びます。 サポートチケットを開いてポリシーの再作成を依頼するまでは、それらのデプロイではエラーが発生し続けます。
鍵を再利用する場合には注意してください。