Amazon DocumentDB クラスタースナップショットの共有
Amazon DocumentDB を使用すると、次の方法で手動クラスタースナップショットを共有できます。
自動クラスタースナップショットを共有するには、自動化されたスナップショットをコピーしてそのコピーを共有することで、手動クラスタースナップショットを作成します。このプロセスは、AWS Backup で生成されたリソースにも適用されます。
手動スナップショットを最大 20 のその他の AWS アカウント と共有することができます。暗号化されていない手動スナップショットをパブリックとして共有することもできます。これにより、このスナップショットをすべてのアカウントが使用できるようになります。スナップショットをパブリックとして共有する場合には、パブリックスナップショットにプライベート情報が含まれないように注意してください。
手動スナップショットを他の AWS アカウント と共有している場合、または AWS CLI あるいは Amazon DocumentDB API を使用して共有スナップショットからクラスターを復元する際、スナップショット識別子として共有スナップショットの Amazon リソースネーム (ARN) を指定する必要があります。
暗号化されたスナップショットの共有
以下の制限は、暗号化されたスナップショットの共有に適用されます。
暗号化されたスナップショットを共有するには、以下のステップに従います。
-
スナップショットの暗号化に使用された AWS Key Management Service (AWS KMS) 暗号化キーを、スナップショットにアクセスできるようにするすべてのアカウントと共有します。
AWS KMS の暗号化キーは、AWS KMS のキーポリシーに他のアカウントを追加することで、別の AWS のアカウントと共有できます。キーポリシーの更新の詳細については、 AWS Key Management Service デベロッパーガイド 中の AWS KMSのキーポリシーを参照してください。キーポリシーの作成例については、このトピックで後述する 暗号化されているスナップショットのコピーを許可する IAM ポリシーの作成 を参照してください。
-
以下に示す通り、AWS CLI を使用して、暗号化されたスナップショットを他のアカウントと共有します。
AWS KMS 暗号化キーへのアクセス許可
お客様のアカウントから共有された暗号化されたスナップショットをコピーする別の AWS アカウント のために、お客様のスナップショットを共有したアカウントに、スナップショットを暗号化した AWS KMS のキーへのアクセスがある必要があります。別のアカウントに AWS KMS キーへのアクセスを許可するには、AWS KMS キーのキーポリシーを更新して、共有先のアカウントの ARN を AWS KMS キーポリシーのプリンシパルに設定します。次に、kms:CreateGrant アクションを許可します。
アカウントアクセスを AWS KMS の暗号化キーに付与した後、暗号化されたスナップショットをコピーするには、そのアカウントで AWS Identity and Access Management (IAM)ユーザーを作成する必要があります (すでに存在していない場合)。さらに、そのアカウントは、 ユーザーが AWS KMS のキーを使用して暗号化されたスナップショットをコピーできるようにする IAM ユーザーへの IAM ポリシーもアタッチする必要があります。AWS KMS のセキュリティ制限のため、アカウントは IAM ユーザーである必要があり、ルート AWS アカウント のアイデンティティにすることはできません。
次のキーポリシーの例では、ユーザー 123451234512 が AWS KMS 暗号化キーの所有者です。ユーザー 123456789012 がキーの共有先のアカウントです。この更新されたキーポリシーにより、アカウントは AWS KMS キーにアクセスできます。これを行うため、ユーザー 123456789012 のルート AWS アカウント アイデンティティ の ARN をポリシーのプリンシパルとして含め、kms:CreateGrant アクションを許可します。
- JSON
-
-
{
"Id": "key-policy-1",
"Version":"2012-10-17",
"Statement": [
{
"Sid": "Allow use of the key",
"Effect": "Allow",
"Principal": {"AWS": [
"arn:aws:iam::123451234512:user/KeyUser",
"arn:aws:iam::123456789012:root"
]},
"Action": [
"kms:CreateGrant",
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*"},
{
"Sid": "Allow attachment of persistent resources",
"Effect": "Allow",
"Principal": {"AWS": [
"arn:aws:iam::123451234512:user/KeyUser",
"arn:aws:iam::123456789012:root"
]},
"Action": [
"kms:CreateGrant",
"kms:ListGrants",
"kms:RevokeGrant"
],
"Resource": "*",
"Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}
}
]
}
暗号化されているスナップショットのコピーを許可する IAM ポリシーの作成
外部の AWS アカウント に AWS KMS のキーへのアクセスがある場合、そのアカウントの所有者は、アカウント用に作成された IAM ユーザーがその AWS KMS のキーで暗号化された暗号化されたスナップショットをコピーできるようにするポリシーを作成できます。
次の例では、AWS アカウント 123456789012 の IAM ユーザーにアタッチできるポリシーを示します。このポリシーにより、IAM ユーザーは us-west-2 リージョンでアカウント 123451234512 から AWS KMS キー c989c1dd-a3f2-4a5d-8d96-e793d082ab26 によって暗号化された共有スナップショットをコピーできます。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "AllowUseOfTheKey",
"Effect": "Allow",
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey",
"kms:CreateGrant",
"kms:RetireGrant"
],
"Resource": ["arn:aws:kms:us-west-2:123451234512:key/c989c1dd-a3f2-4a5d-8d96-e793d082ab26"]
},
{
"Sid": "AllowAttachmentOfPersistentResources",
"Effect": "Allow",
"Action": [
"kms:CreateGrant",
"kms:ListGrants",
"kms:RevokeGrant"
],
"Resource": ["arn:aws:kms:us-west-2:123451234512:key/c989c1dd-a3f2-4a5d-8d96-e793d082ab26"],
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": true
}
}
}
]
}
キーポリシーの更新の詳細については、 AWS Key Management Serviceデベロッパーガイド 中の AWS KMSのキーポリシーを使用する を参照してください。
スナップショットの共有
AWS マネジメントコンソール または AWS CLI を使用して、Amazon DocumentDB 手動クラスタースナップショット (または自動スナップショットのコピー) を共有できます。
- Using the AWS マネジメントコンソール
-
AWS マネジメントコンソール を使用してスナップショットを共有するには、以下のステップを実行します。
AWS マネジメントコンソール にサインインして、Amazon DocumentDB コンソール https://console.aws.amazon.com/docdb を開きます。
ナビゲーションペインで、[Snapshots] を選択します。
共有する手動スナップショットを選択します。
[アクション] ドロップダウンメニューで、[共有] を選択します。
[DB snapshot visibility] で次のいずれかのオプションを選択します。
ソースが暗号化されていない場合は、手動クラスタースナップショットからすべての AWS アカウントにクラスターの復元を許可するには、[Public] (公開) を選択します。手動クラスタースナップショットからのクラスターの復元を、指定した AWS アカウントのみに許可するには、[Private] (プライベート) を選択します。
[DB snapshot visibility] (DB スナップショット可視化) を [Public] (公開) に設定すると、すべての AWS アカウントが手動クラスタースナップショットからクラスターを復元し、データへアクセスすることができるようになります。プライベート情報を含む手動クラスタースナップショットは、[Public] として共有しないでください。
出典 DB クラスターが暗号化されている場合、暗号化されているスナップショットはパブリックとして共有できないため、[DB snapshot visibility] が [Private] に設定されます。
デフォルトの AWS KMS key で暗号化されたスナップショットは共有できません。
[AWS アカウント ID] では、マニュアルスナップショットからのクラスターの復元を許可するアカウントの AWS アカウント識別子を入力してから、[追加] を選択します。この操作を繰り返して、AWS アカウント ID を最大 20 AWS アカウント追加できます。
アクセス許可が付与されたアカウントのリストに AWS アカウント ID を誤って追加した場合には、その AWS アカウント ID の右側にある [Delete] を選択すれば、削除することができます。
手動スナップショットの復元を許可する AWS アカウント ID をすべて追加したら、[保存] を選択して変更を保存します。
- Using the AWS CLI
-
AWS CLI を使用してスナップショットを共有するには、Amazon DocumentDB の modify-db-snapshot-attribute オペレーションを使用します。--values-to-add のパラメータを使用して、手動スナップショットの復元が許可されている AWS アカウント のための ID リストを追加します。
次の例では、2 つの AWS アカウント 識別子 123451234512 および 123456789012 が manual-snapshot1 という名前のスナップショットを復元できるようになります。また、all 属性値を削除し、スナップショットをプライベートとしてマークします。
Linux、macOS、Unix の場合:
aws docdb modify-db-cluster-snapshot-attribute \
--db-cluster-snapshot-identifier sample-cluster-snapshot \
--attribute-name restore \
--values-to-add '["123451234512","123456789012"]'
Windows の場合:
aws docdb modify-db-cluster-snapshot-attribute ^
--db-cluster-snapshot-identifier sample-cluster-snapshot ^
--attribute-name restore ^
--values-to-add '["123451234512","123456789012"]'
このオペレーションによる出力は、次のようになります。
{
"DBClusterSnapshotAttributesResult": {
"DBClusterSnapshotIdentifier": "sample-cluster-snapshot",
"DBClusterSnapshotAttributes": [
{
"AttributeName": "restore",
"AttributeValues": [
"123451234512",
"123456789012"
]
}
]
}
}
リストから AWS アカウント の識別子を削除するには、--values-to-remove のパラメータを使用します。AWS アカウント ID 123456789012 でスナップショットが復元できない例を以下に示します。
Linux、macOS、Unix の場合:
aws docdb modify-db-cluster-snapshot-attribute \
--db-cluster-snapshot-identifier sample-cluster-snapshot \
--attribute-name restore \
--values-to-remove '["123456789012"]'
Windows の場合:
aws docdb modify-db-cluster-snapshot-attribute ^
--db-cluster-snapshot-identifier sample-cluster-snapshot ^
--attribute-name restore ^
--values-to-remove '["123456789012"]'
このオペレーションによる出力は、次のようになります。
{
"DBClusterSnapshotAttributesResult": {
"DBClusterSnapshotIdentifier": "sample-cluster-snapshot",
"DBClusterSnapshotAttributes": [
{
"AttributeName": "restore",
"AttributeValues": [
"123451234512"
]
}
]
}
}