本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
安全性
当您在 AWS 基础设施上构建系统时,AWS 和您如何共同分担安全责任。此责任共担模式
AWS KMS
该解决方案创建一个 AWS 管理的客户托管式密钥,该密钥用于为 SNS 主题和 DynamoDB 表配置服务器端加密。
Amazon IAM
该解决方案的 Lambda 函数需要访问中心账户资源、访问 get/put 系统管理器参数、访问CloudWatch 日志组、AWS KMS 密钥 encryption/decryption以及向 SNS 发布消息的权限。此外,实例调度器还将在所有托管账户中创建调度角色,这些账户将提供start/stop 对 EC2、RDS、Autoscaling 资源、数据库实例的访问权限,修改实例属性和更新这些资源的标签。解决方案会向作为解决方案模板的一部分创建的 Lambda 服务角色提供所有必要的权限。
部署时,实例调度器将为其每个 Lambda 函数部署限定范围的 IAM 角色以及只能由部署的中心模板中的特定调度 Lambda 担任的调度程序角色。这些计划角色的名称将遵循模式 {namespace}-Scheduler-Role 和 {namespace}-ASG-Scheduling-Role。
有关向每个服务角色提供的权限的详细信息,请参阅CloudFormation 模板。
加密的 EC2 EBS 卷
在计划连接到 AWS KMS 加密的 EBS 卷上的 EC2 实例时,必须授予实例调度器使用关联的 AWS KMS 密钥的权限。这可让 Amazon EC2 在启动函数期间解密附加的 EBS 卷。必须向与使用此密钥的 EC2 实例所属账户中的计划角色授予此权限。
要授予在实例调度器中使用 AWS KMS 密钥的权限,请使用密钥将 AWS KMS 密钥的 ARN 添加到与 EC2 实例相同的账户中的实例调度器堆栈(中心或分支):
适用于 EC2 的 KMS 密钥 ARN
这将自动生成以下策略并将其添加到该账户的计划角色中:
{ "Version": "2012-10-17", "Statement": [ { "Condition": { "StringLike": { "kms:ViaService": "ec2.*.amazonaws.com" }, "Null": { "kms:EncryptionContextKeys": "false", "kms:GrantOperations": "false" }, "ForAllValues:StringEquals": { "kms:EncryptionContextKeys": [ "aws:ebs:id" ], "kms:GrantOperations": [ "Decrypt" ] }, "Bool": { "kms:GrantIsForAWSResource": "true" } }, "Action": "kms:CreateGrant", "Resource": [ "Your-KMS-ARNs-Here" ], "Effect": "Allow" } ] }
EC2 许可证管理器
在计划在 AWS 许可证管理器中管理的 EC2 实例时,必须授予实例调度器使用关联许可证配置的权限。这使解决方案能够正确启动和停止实例,同时保持许可证合规性。必须使用许可证管理器将此权限授予与 EC2 实例同一个账户中的调度角色。
要授予将 AWS 许可证管理器与实例调度器一起使用的权限,请使用许可证管理器将许可证管理器配置 ARN 添加到与 EC2 实例相同的账户中的实例调度器堆栈(中心或分支):
EC2 的许可证管理器配置 ARN
这将自动生成以下策略并将其添加到该账户的计划角色中:
{ "Version": "2012-10-17", "Statement": [ { "Action": "ec2:StartInstances", "Resource": [ "Your-License-Manager-ARNs-Here" ], "Effect": "Allow" } ] }
有关许可证管理器权限的更多信息,请参阅 AWS 许可证管理器用户指南中的 AWS 许可证管理器的身份和访问管理。