加密儲存於連接至 Amazon ECS 任務之 Amazon EBS 磁碟區中的資料
您可以使用 AWS Key Management Service (AWS KMS) 來建立與管理用於保護資料的密碼編譯金鑰。Amazon EBS 磁碟區透過 AWS KMS keys 進行靜態加密。以下類型的資料會經過加密:
-
儲存在磁碟區上的靜態資料
-
磁碟 I/O 資料
-
從磁碟區建立的快照
-
從加密快照建立的新磁碟區
連接至任務的 Amazon EBS 磁碟區可透過以下兩種金鑰加密:一是別名為 alias/aws/ebs 的預設 AWS 受管金鑰,二是磁碟區組態中指定的對稱客戶自管金鑰。預設的 AWS 受管金鑰在每個 AWS 區域中對每個 AWS 帳戶都是唯一的,且會自動建立。若要建立對稱客戶自管金鑰,請遵循 AWS KMS Developer Guide 中的 Creating symmetric encryption KMS keys 章節所述步驟進行。
您可以設定 Amazon EBS 預設加密功能,如此一來,在特定 AWS 區域中建立並連接至任務的所有新磁碟區,都將使用您為帳戶指定的 KMS 金鑰進行加密。如需有關 Amazon EBS 加密與預設加密的詳細資訊,請參閱 Developer Guide 中的 Amazon EBS encryption。
Amazon ECS 受管執行個體行為
您可以透過啟用加密功能來為 Amazon EBS 磁碟區加密,一種方式是啟用預設加密功能,另一種方式是在建立要加密的磁碟區時直接啟用加密功能。如需有關如何啟用預設加密功能 (帳戶層級) 的資訊,請參閱 Amazon EBS User Guide 中的 Encryption by default。
您可以設定這些金鑰的任意組合。KMS 金鑰的優先順序如下:
-
磁碟區組態中指定的 KMS 金鑰。在磁碟區組態中指定 KMS 金鑰時,其會覆寫 Amazon EBS 預設值以及在帳戶層級指定的任何 KMS 金鑰。
-
在帳戶層級指定的 KMS 金鑰。在為 Amazon ECS 受管儲存體指定叢集層級的加密 KMS 金鑰時,其會覆寫 Amazon EBS 預設加密,但不會覆寫磁碟區組態中指定的任何 KMS 金鑰。
-
Amazon EBS 預設加密。如果您未指定帳戶層級 KMS 金鑰,也未在磁碟區組態中指定金鑰,則會套用預設加密。如果您啟用 Amazon EBS 預設加密,則預設使用的是您為預設加密指定的 KMS 金鑰。否則,預設使用別名為
alias/aws/ebs的 AWS 受管金鑰。注意
若在磁碟區組態中將
encrypted設定為false,不指定帳戶層級 KMS 金鑰,但啟用 Amazon EBS 預設加密,則該磁碟區仍會使用為 Amazon EBS 預設加密指定的金鑰進行加密。
非 Amazon ECS 受管執行個體行為
您也可以在建立或更新叢集時,設定 Amazon ECS 受管儲存體的 Amazon ECS 叢集層級加密。叢集層級加密會在任務層級生效,可用於透過指定的 KMS 金鑰,對連接至特定叢集中執行之每項任務的 Amazon EBS 磁碟區進行加密。如需有關為每項任務設定叢集層級加密的詳細資訊,請參閱 Amazon ECS API reference 中的 ManagedStorageConfiguration。
您可以設定這些金鑰的任意組合。KMS 金鑰的優先順序如下:
-
磁碟區組態中指定的 KMS 金鑰。在磁碟區組態中指定 KMS 金鑰時,其會覆寫 Amazon EBS 預設值以及在叢集層級指定的任何 KMS 金鑰。
-
在叢集層級指定的 KMS 金鑰。在為 Amazon ECS 受管儲存體指定叢集層級的加密 KMS 金鑰時,其會覆寫 Amazon EBS 預設加密,但不會覆寫磁碟區組態中指定的任何 KMS 金鑰。
-
Amazon EBS 預設加密。如果您未指定叢集層級 KMS 金鑰,也未在磁碟區組態中指定金鑰,則會套用預設加密。如果您啟用 Amazon EBS 預設加密,則預設使用的是您為預設加密指定的 KMS 金鑰。否則,預設使用別名為
alias/aws/ebs的 AWS 受管金鑰。注意
若在磁碟區組態中將
encrypted設定為false,不指定叢集層級 KMS 金鑰,但啟用 Amazon EBS 預設加密,則該磁碟區仍會使用為 Amazon EBS 預設加密指定的金鑰進行加密。
客戶受管 KMS 金鑰政策
若要使用客戶自管金鑰加密連接至任務的 EBS 磁碟區,您必須設定 KMS 金鑰政策,確保用於磁碟區組態的 IAM 角色具有使用金鑰的必要許可。金鑰政策必須同時包含 kms:CreateGrant 與 kms:GenerateDataKey* 許可。加密使用快照建立的磁碟區時,需用到 kms:ReEncryptTo 與 kms:ReEncryptFrom 許可。如果只想為要連接的新空白磁碟區進行設定與加密,您可以排除 kms:ReEncryptTo 與 kms:ReEncryptFrom 許可。
下列 JSON 程式碼片段展示了可連接至 KMS 金鑰政策的金鑰政策陳述式。使用這些陳述式將提供 Amazon ECS 使用該金鑰加密 EBS 磁碟區的存取權。若要使用這些範例政策陳述式,請以自己的資訊取代 。與往常一樣,只設定需要的許可即可。user input placeholders
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ecsInfrastructureRole" }, "Action": "kms:DescribeKey", "Resource":"*" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ecsInfrastructureRole" }, "Action": [ "kms:GenerateDataKey*", "kms:ReEncryptTo", "kms:ReEncryptFrom" ], "Resource":"*", "Condition": { "StringEquals": { "kms:CallerAccount": "aws_account_id", "kms:ViaService": "ec2.region.amazonaws.com" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:ebs:id" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ecsInfrastructureRole" }, "Action": "kms:CreateGrant", "Resource":"*", "Condition": { "StringEquals": { "kms:CallerAccount": "aws_account_id", "kms:ViaService": "ec2.region.amazonaws.com" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:ebs:id" }, "Bool": { "kms:GrantIsForAWSResource": true } } }
如需有關金鑰政策與許可的詳細資訊,請參閱 AWS KMS Developer Guide 中的 Key policies in AWS KMS 與 AWS KMS permissions。如需對與金鑰許可相關的 EBS 磁碟區連接問題進行疑難排解,請參閱對 Amazon ECS 任務的 Amazon EBS 磁碟區連接問題進行疑難排解 。