亚马逊AWS官方博客
AWS IAM Identity Center 现在支持使用客户自主管理型 KMS 密钥进行静态加密
即日起,您可以使用自有 AWS Key Management Service(AWS KMS)密钥对存储在 AWS IAM Identity Center 组织实例中的身份数据(如用户和用户组属性)进行加密。
许多受监管行业的组织都需要对加密密钥管理拥有完全控制权。尽管 IAM Identity Center 已通过 AWS 自有密钥对静态数据进行加密,但部分客户出于审计与合规需求,仍希望能自主管理加密密钥。
通过此次发布,您可以使用客户自主管理的 KMS 密钥(CMK)对 IAM Identity Center 的静态身份数据进行加密。CMK 让您能完全掌控密钥生命周期,包括密钥的创建、轮换和删除。您还可通过 AWS Key Management Service(AWS KMS)密钥策略和 IAM 策略配置精细的密钥访问控制,确保只有授权主体能访问加密数据。启动时,CMK 必须与您的 IAM Identity Center 实例处于同一 AWS 账户和区域。Identity Center 与 KMS 的集成会生成详细的 AWS CloudTrail 日志,用于审计密钥使用情况,并帮助满足监管合规要求。
Identity Center 同时支持单区域和多区域密钥,可满足您的部署需求。尽管 Identity Center 实例目前智能部署在单个区域,但除非公司政策限制必须使用单区域 AWS KMS 密钥,否则建议优先选择多区域密钥。多区域密钥能在各区域间提供一致的密钥材料,同时在每个区域维护独立的密钥基础设施。这能为您的加密策略提供更高的灵活性,并有助于部署适应未来需求。
**我们开始吧
**假设我希望使用 CMK 加密 Identity Center 组织实例的身份数据。我的组织通过 Identity Center 为员工提供对 AWS 托管应用程序(如 Amazon Q Business 或 Amazon Athena)的访问权限。
截至目前,部分 AWS 托管应用程序无法与配置了客户自主管理型 KMS 密钥的 IAM Identity Center 配合使用。查看可与 Identity Center 配合使用的 AWS 托管应用程序,及时了解不断变化的兼容应用程序列表。
高级别流程要求首先在 AWS KMS 中创建对称的客户自主管理型密钥(CMK)。该密钥必须配置为支持加密和解密操作。接下来,配置密钥策略,向 Identity Center、AWS 托管应用程序、管理员以及其他需要访问 IAM Identity Center 和 IAM Identity Center 服务 API 的主体授予访问权限。根据您对 Identity Center 的使用,为密钥定义不同的策略,并为 IAM 主体配置对应的 IAM 策略。服务文档中提供了更详细的说明,可帮助您覆盖最常见的使用场景。
该演示分为三部分:首先,在 AWS KMS 中创建客户自主管理型密钥,然后为其配置权限,以授权 Identity Center 和 AWS 托管应用程序使用该密钥。其次,为需要从其他 AWS 账户使用该密钥的主体(如 AWS 应用管理员)更新 IAM 策略。最后,将 IAM Identity Center 配置为使用该密钥。
第 1 部分:创建密钥并定义权限
首先,让我们在 AWS KMS 中创建一个新的 CMK。
该密钥必须与 Identity Center 实例处于同一 AWS 区域和 AWS 账户。您必须在 AWS Organizations 内的组织管理账户中创建 Identity Center 实例和密钥。
导航至与 IAM Identity Center 实例同区域的 AWS Key Management Service(AWS KMS)控制台,然后选择
创建密钥。这将启动密钥创建向导。
在
步骤 1 — 配置密钥下,我选择“对称”(用于加密和解密的单一密钥)或“非对称”(用于加密/解密和签名/验证的公私密钥对)作为密钥类型。Identity Center 需要对称密钥才能进行静态加密。我选择 对称。
对于密钥用途,我选择
加密和解密,确保密钥仅用于加密和解密数据。
在
高级选项下的 密钥材料来源中,我选择 KMS — 推荐,由 AWS KMS 创建并管理密钥材料。
对于
区域性,我选择“单区域密钥”或“多区域密钥”。我选择 多区域密钥,以允许密钥管理员将密钥复制到其他区域。如前所述,尽管当前 Identity Center 目前不要求此操作,但这样可以让配置经得起未来考验。请记住,密钥创建后,无法将单区域密钥转换为多区域密钥,但可以更改 IAM Identity Center 使用的密钥。
然后,我选择
下一步继续执行其他配置步骤,例如添加标签、定义管理权限、设置使用权限以及在创建密钥之前查看最终配置。
在
步骤 2 — 添加标签中,我为密钥输入 别名,然后选择 下一步。
在本演示中,我将使用文档中提供的模板添加策略语句来编辑密钥策略。 我跳过步骤 3 和步骤 4,导航到
步骤 5 — 编辑密钥策略。
Identity Center 至少需要允许自身及管理员使用密钥的权限。因此,我添加了三条策略说明,第一条和第二条授权服务管理员使用密钥,第三条授权 Identity Center 服务本身使用密钥。
{
“Version”: “2012-10-17”,
“Id”: “key-consolepolicy-3”,
“Statement”: [
{
“Sid”: “Allow_IAMIdentityCenter_Admin_to_use_the_KMS_key_via_IdentityCenter_and_IdentityStore”,
“Effect”: “Allow”,
“Principal”: {
“AWS”: “ARN_OF_YOUR_IDENTITY_CENTER_ADMIN_IAM_ROLE”
},
“Action”: [
“kms:Decrypt”,
“kms:Encrypt”,
“kms:GenerateDataKeyWithoutPlaintext”
],
“Resource”: “*”,
“Condition”: {
“StringLike”: {
“kms:ViaService”: [
“sso.*.amazonaws.com”,
“identitystore.*.amazonaws.com”
]
}
}
},
{
“Sid”: “Allow_IdentityCenter_admin_to_describe_the_KMS_key”,
“Effect”: “Allow”,
“Principal”: {
“AWS”: “ARN_OF_YOUR_IDENTITY_CENTER_ADMIN_IAM_ROLE”
},
“Action”: “kms:DescribeKey”,
“Resource”: “*”
},
{
“Sid”: “Allow_IdentityCenter_and_IdentityStore_to_use_the_KMS_key”,
“Effect”: “Allow”,
“Principal”: {
“Service”: [
“sso.amazonaws.com”,
“identitystore.amazonaws.com”
]
},
“Action”: [
“kms:Decrypt”,
“kms:ReEncryptTo”,
“kms:ReEncryptFrom”,
“kms:GenerateDataKeyWithoutPlaintext”
],
“Resource”: “*”,
“Condition”: {
“StringEquals”: {
“aws:SourceAccount”: “”
}
}
},
{
“Sid”: “Allow_IdentityCenter_and_IdentityStore_to_describe_the_KMS_key”,
“Effect”: “Allow”,
“Principal”: {
“Service”: [
“sso.amazonaws.com”,
“identitystore.amazonaws.com”
]
},
“Action”: [
“kms:DescribeKey”
],
“Resource”: “*”
}
]
}
我还必须添加额外的策略语句以允许我的使用案例:使用 AWS 托管应用程序。我添加了以下两个策略语句,以授权 AWS 托管应用程序及其管理员使用 KMS 密钥。该文档列出了其他使用案例及其各自的策略。
{
“Sid”: “Allow_AWS_app_admins_in_the_same_AWS_organization_to_use_the_KMS_key”,
“Effect”: “Allow”,
“Principal”: “*”,
“Action”: [
“kms:Decrypt”
],
“Resource”: “*”,
“Condition”: {
“StringEquals” : {
“aws:PrincipalOrgID”: “MY_ORG_ID (format: o-xxxxxxxx)”
},
“StringLike”: {
“kms:ViaService”: [
“sso.*.amazonaws.com”, “identitystore.*.amazonaws.com”
]
}
}
},
{
“Sid”: “Allow_managed_apps_to_use_the_KMS_Key”,
“Effect”: “Allow”,
“Principal”: “*”,
“Action”: [
“kms:Decrypt”
],
“Resource”: “*”,
“Condition”: {
“Bool”: { “aws:PrincipalIsAWSService”: “true” },
“StringLike”: {
“kms:ViaService”: [
“sso.*.amazonaws.com”, “identitystore.*.amazonaws.com”
]
},
“StringEquals”: { “aws:SourceOrgID”: “MY_ORG_ID (format: o-xxxxxxxx)” }
}
}
您可以进一步将密钥的使用限制为特定的 Identity Center 实例、特定的应用程序实例或特定的应用程序管理员。该文档包含适用于您的使用案例的高级密钥策略示例。
为了帮助防止 IAM 角色名称在重新创建权限集时更改,请使用自定义信任策略示例中描述的方法。
第 2 部分:更新 IAM 策略以允许使用来自其他 AWS 账户的 KMS 密钥
任何从其他 AWS 账户使用 Identity Center 服务 API 的 IAM 主体(如 Identity Center 委托管理员、AWS 应用程序管理员)都需要通过 IAM 策略语句允许其通过这些 API 使用 KMS 密钥。
我通过创建新策略并将策略附加到与我的使用案例相关的 IAM 角色来授予访问密钥的权限。您也可以将这些语句添加到 IAM 角色现有的基于身份的策略中。
为此,在创建密钥后,我找到了它的 ARN,并使用它来替换下面的模板中的
key_ARN。然后,我将策略附加到托管应用程序管理员 IAM 主体。文档还涵盖授予 IAM Identity Center 委托管理员密钥访问权限的 IAM 策略。
以下是托管应用程序管理员的示例:
{
“Sid”: “Allow_app_admins_to_use_the_KMS_key_via_IdentityCenter_and_IdentityStore”,
“Effect”: “Allow”,
“Action”:
“kms:Decrypt”,
“Resource”: “”,
“Condition”: {
“StringLike”: {
“kms:ViaService”: [
“sso.*.amazonaws.com”,
“identitystore.*.amazonaws.com”
]
}
}
}
第 3 部分:配置 IAM Identity Center 以使用密钥
我可以在启用 Identity Center 组织实例期间或在现有实例上配置 CMK,并且可以通过在 CMK 之间切换或恢复到 AWS 自有密钥来随时更改加密配置。
请注意,不正确的 KMS 密钥权限配置可能会中断 Identity Center 的运行,或者无法通过 IAM Identity Center 访问 AWS 托管应用程序和账户。请仔细完成最后一步,并确保您已阅读并理解文档。
完成 CMK 的创建与配置后,我可以在启用 Identity Center 时,在
高级配置中选择该密钥。
为了通过 AWS 管理控制台现有 Identity Center 实例配置 CMK,我首先导航至 AWS 管理控制台的 IAM Identity Center 板块。在那里,我从导航窗格中选择
设置,然后选择 管理选项卡,并在 用于加密 IAM Identity Center 静态数据的密钥部分中选择 管理加密。
我可以随时选择同一 AWS 账户中的其他客户托管 KMS 密钥,或切换回 AWS 托管密钥。
选择
保存后,密钥更改流程将在几秒内完成。整个过渡期间,所有服务功能都将继续正常运行。若因任何原因导致 IAM Identity Center 无法访问新密钥,系统会返回一条错误消息,Identity Center 将继续使用当前密钥,确保仍然使用现有加密机制加密身份数据。 **注意事项
**您创建的加密密钥将成为 Identity Center 的重要组成部分。当您选择使用自己的托管密钥对身份属性进行静态加密时,需验证以下要点:
- 您是否配置了使用 KMS 密钥所需的必要权限? 如果没有正确权限,启用 CMK 可能会失败,或者导致 IAM Identity Center 管理和 AWS 托管应用程序中断。
- 您是否已验证 AWS 托管应用程序与 CMK 密钥兼容? 有关兼容应用程序的列表,请参阅可与 Identity Center 配合使用的 AWS 托管应用程序。 如果为与 CMK 不兼容的 AWS 托管应用程序使用的 Identity Center 启用 CMK,会导致这些应用程序无法正常运行。如果您有不兼容的应用程序,请不要继续。
- 您的组织是否使用需要额外的 IAM 角色配置才能使用 Identity Center 和 Identity Store API 的 AWS 托管应用程序? 对于已经部署的每个 AWS 托管应用程序,请查看托管应用程序的用户指南,了解用于 IAM Identity Centre 使用的最新 KMS 密钥权限,并按照说明进行更新,以防止应用程序中断。
- 为简洁起见,本文中的 KMS 密钥策略声明省略了加密上下文,这使您可以限制为对包括特定实例在内的 Identity Center 使用 KMS 密钥。对于您的生产场景,您可以为 Identity Center 添加如下条件:
“Condition”: { “StringLike”: { “kms:EncryptionContext:aws:sso:instance-arn”: “${identity_center_arn}”, “kms:ViaService”: “sso.*.amazonaws.com” } }
或针对 Identity Store 的加密上下文:
“Condition”: { “StringLike”: { “kms:EncryptionContext:aws:identitystore:identitystore-arn”: “${identity_store_arn}”, “kms:ViaService”: “identitystore.*.amazonaws.com” } }
**定价和可用性
**AWS KMS 的标准收费规则适用于密钥存储和 API 使用。IAM Identity Center 仍然不额外收费。
此功能目前已在所有 AWS 商业区域、AWS GovCloud(美国)区域和 AWS 中国区域推出。要了解更多信息,请访问 IAM Identity Center 用户指南。
我们期待了解您如何利用这一新功能满足企业的安全性与合规性需求。
|
AWS 架构师中心: 云端创新的引领者
探索 AWS 架构师中心,获取经实战验证的最佳实践与架构指南,助您高效构建安全、可靠的云上应用
AWS USDT代付 | Payment 解决方案