某公司使用 AWS Organizations 管理属于多个部门的不同 AWS 账户,公司在管理账户中有一个 S3 存储桶。公司需要一个既能满足安全要求又尽量减少运营开销的解决方案,实现只有AWS Organizations 内的AWS 账户可以访问该定 S3 存储桶访问。
本次采用AWS Console界面完成作业。
注意:根据项目的具体情况,可以采用不同的实施方法。比如使用命令行(CLI)部署、代码部署 (CloudFomation、Terraform等)、以及其它开发语言(SDK)完成作业。
步骤一:
1.1 打开 AWS Organization 控制台界面
1.2 确认AWS Organization 服务已经启用
1.3 选择策略,开启 Resource control policies 功能
步骤二:
2.1 转到Resource control policies 界面
2.2 创建 RCP,用以限制对 S3 存储桶的访问,确保只有组织内的特定主体能够访问
2.3 设定策略内容
实现的功能为,请求不是来自组织内部的主体,也不是来自 AWS 服务,则对 S3 存储桶的访问将被拒绝。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOrgIdentities", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "*", "Condition": { "StringNotEqualsIfExists": { "aws:PrincipalOrgID": "[MY ORG ID]" }, "BoolIfExists": { "aws:PrincipalIsAWSService": "false" } } } ] }
步骤三:
1.1 打开 Resource control policies 界面
1.2 将创建的 RCP 其连接到组织的根、组织部门或组织内的特定 AWS 账户
1.1 在 AWS Organization 内部的 AWS 账户中创建测试用的 S3 存储桶
1.2 将该存储桶的访问权限设定为公开访问,意图模仿因为工程师的疏忽而错误设置目标S3 存储桶的权限设置。
1.3 通过AWS Organization 内部的 AWS 账户内外的用户和主体,分别尝试访问目标 S3 存储桶,验证只有 AWS Organization 内部的 AWS 账户的用户和主体才可以访问。