(可选)配置 AWS KMS keys
如果您想使用 AWS KMS 加密密钥对资源进行加密和解密,请选中对应的复选框。如果您已有密钥,则可以从下拉菜单中显示的标识符中选择它们。您可以通过选择创建密钥来生成新密钥。您可以在更新登录区时随时添加或更改 KMS 密钥。
当您选择设置登录区时,AWS Control Tower 会执行预检查以验证您的 KMS 密钥。密钥还必须满足以下要求:
-
已启用
-
对称
-
不是多区域密钥
-
已将正确的权限添加到策略中。
-
密钥在管理账户中
如果密钥不符合这些要求,您可能会看到一个错误横幅。在这种情况下,请选择其他密钥或生成密钥。请务必编辑密钥的权限策略,如下一部分所述。
更新 AWS KMS 密钥策略
您必须先创建 KMS 密钥,然后才能更新 KMS 密钥策略。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的创建密钥策略。
要在 AWS Control Tower 中使用 KMS 密钥,您必须通过添加 AWS Config 和 AWS CloudTrail 所需的最低权限来更新默认的 KMS 密钥策略。作为最佳实践,我们建议您在所有策略中包含所需的最低权限。更新 KMS 密钥策略时,您可以将权限作为一组添加到单个 JSON 语句中或逐行添加权限。
该过程介绍如何通过添加允许 AWS Config 和 CloudTrail 将 AWS KMS 用于加密的策略语句,在 AWS KMS 控制台中更新默认的 KMS 密钥策略。策略语句要求您包含以下信息:
-
YOUR-MANAGEMENT-ACCOUNT-ID
:将在其中设置 AWS Control Tower 的管理账户的 ID。 -
YOUR-HOME-REGION
:您在设置 AWS Control Tower 时将选择的主区域。 -
YOUR-KMS-KEY-ID
:将与策略一起使用的 KMS 密钥 ID。
更新 AWS KMS 密钥策略
-
从 https://console.aws.amazon.com/kms
打开 AWS KMS 控制台 -
在导航窗格上,选择客户托管密钥。
-
在表格中,选择要编辑的密钥。
-
在密钥策略选项卡中,确保您可以查看密钥策略。如果您无法查看密钥策略,请选择切换到策略视图。
-
选择编辑,然后通过为 AWS Config 和 CloudTrail 添加以下策略语句来更新默认的 KMS 密钥策略。
AWS Config 策略语句
{ "Sid": "Allow Config to use KMS for encryption", "Effect": "Allow", "Principal": { "Service": "config.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:
YOUR-HOME-REGION
:YOUR-MANAGEMENT-ACCOUNT-ID
:key/YOUR-KMS-KEY-ID
" }CloudTrail 策略语句
{ "Sid": "Allow CloudTrail to use KMS for encryption", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "arn:aws:kms:
YOUR-HOME-REGION
:YOUR-MANAGEMENT-ACCOUNT-ID
:key/YOUR-KMS-KEY-ID
", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudtrail:YOUR-HOME-REGION
:YOUR-MANAGEMENT-ACCOUNT-ID
:trail/aws-controltower-BaselineCloudTrail" }, "StringLike": { "kms:EncryptionContext:aws:cloudtrail:arn": "arn:aws:cloudtrail:*:YOUR-MANAGEMENT-ACCOUNT-ID
:trail/*" } } } -
选择保存更改。
KMS 密钥策略示例
以下示例策略显示了在您添加授予 AWS Config 和 CloudTrail 最低所需权限的策略语句后,您的 KMS 密钥策略会是什么样子的。示例策略不包括您的默认 KMS 密钥策略。
{
"Version": "2012-10-17",
"Id": "CustomKMSPolicy",
"Statement": [
{
... YOUR-EXISTING-POLICIES
...
},
{
"Sid": "Allow Config to use KMS for encryption",
"Effect": "Allow",
"Principal": {
"Service": "config.amazonaws.com"
},
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": "arn:aws:kms:YOUR-HOME-REGION
:YOUR-MANAGEMENT-ACCOUNT-ID
:key/YOUR-KMS-KEY-ID
"
},
{
"Sid": "Allow CloudTrail to use KMS for encryption",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": [
"kms:GenerateDataKey*",
"kms:Decrypt"
],
"Resource": "arn:aws:kms:YOUR-HOME-REGION
:YOUR-MANAGEMENT-ACCOUNT-ID
:key/YOUR-KMS-KEY-ID
",
"Condition": {
"StringEquals": {
"aws:SourceArn": "arn:aws:cloudtrail:YOUR-HOME-REGION
:YOUR-MANAGEMENT-ACCOUNT-ID
:trail/aws-controltower-BaselineCloudTrail"
},
"StringLike": {
"kms:EncryptionContext:aws:cloudtrail:arn": "arn:aws:cloudtrail:*:YOUR-MANAGEMENT-ACCOUNT-ID
:trail/*"
}
}
}
]
}
要查看其他示例策略,请参阅以下页面:
-
《AWS CloudTrail 用户指南》中的授予加密权限。
-
《AWS Config 开发人员指南》中的使用服务相关角色时 AWS KMS 密钥所需的权限(S3 存储桶交付)。
防范攻击者
通过在策略中添加某些条件,您可以帮助防止某种特定类型的攻击,即混淆代理攻击,当某个实体迫使更有权限的实体执行某个操作(例如跨服务模拟)时,就会发生此类攻击。有关策略条件的一般信息,请参阅在策略中指定条件。
AWS Key Management Service(AWS KMS)允许您创建多区域 KMS 密钥和非对称密钥;但是,AWS Control Tower 不支持多区域密钥或非对称密钥。AWS Control Tower 会对您的现有密钥进行预检查。如果您选择多区域密钥或非对称密钥,则可能会看到一条错误消息。在这种情况下,请生成另一个密钥以用于 AWS Control Tower 资源。
有关 AWS KMS 的更多信息,请参阅《AWS KMS 开发人员指南》。
请注意,默认情况下,AWS Control Tower 中的客户数据使用 SSE-S3 静态加密。