如何集中管理/审核 AWS 基于资源的策略

信息安全 访问控制 aws
2021-08-19 08:28:26

AWS 账户的管理员希望他们的用户能够创建自己的 S3 存储桶、SQS 队列和 KMS 密钥,并将基于资源的 IAM 策略附加到他们的资源。管理员如何批量查找具有基于资源的 IAM 策略的资源并对其进行审查以确保它们符合一组标准?

鉴于这些策略是一致的,我唯一能想到的就是使用亚马逊的支持基于资源的策略的 aws 服务列表,找到这些服务的所有资源,然后获取与每个资源关联的策略。

这种方法不允许对 AWS 的潜力进行有效规划,从而使用户能够将基于资源的策略附加到未来的 Amazon 服务中。

这里有最佳实践或更聪明的方法吗?

3个回答

您应该能够为此使用AWS Config以确保仅允许某些策略。在存储中,您有以下选项:

ebs-snapshot-public-restorable-check
efs-encrypted-check
elb-deletion-protection-enabled
s3-bucket-blacklisted-actions-prohibited
s3-bucket-logging-enabled
s3-bucket-policy-grantee-check
s3-bucket-policy-not-more-permissive
s3-bucket-public-read-prohibited
s3-bucket-public-write-prohibited
s3-bucket-replication-enabled
s3-bucket-server-side-encryption-enabled
s3-bucket-ssl-requests-only
s3-bucket-versioning-enabled

对于您的用例,我认为您可以使用s3-bucket-blacklisted-actions-prohibited和阻止例如所有s3:GetBucket*策略。

您还可以在 CloudFormation 模板中使用这些规则。

我建议禁止putPolicy*所有非管理员的每个服务支持资源策略的 API 调用。然后提供一个结构化的界面来更改这些策略。我相当肯定用户在没有putPolicy权限的情况下仍然可以创建 S3 存储桶和 SQS 队列。我确实认为您需要拥有 putPolicy 权限才能创建新的 CMK。

云形成

如果您在 CF 中控制了所有有问题的资源,并且您的用户可以向 CF 模板提交拉取请求。然后,您可以让您的审阅者在运行堆栈和实施更改之前查看更改。

简单的工作流服务

虽然我对这项服务没有个人经验,但这可能是一个很好的用例。您可以让用户提交提议的策略,将其发送给批准者,并在 Lambda 批准后自动实施。这对我来说似乎是最低摩擦的解决方案。

服务目录

同样,我没有操作此服务的个人经验,但是(我相信)您可以设置一个目录项来进行任何可以由 Cloudformation 表示的更改,并提供允许用户使用的千篇一律的模板。可以列出多种类型的策略,其中包含用户可以控制的变量,这将允许他们灵活使用,而无需创建将所有人拒之门外或不符合您的业务标准的策略。此外,这不需要手动批准。

自己滚

这不是一个很难的问题,您无法编写 Lambda 或 Fargate 或其他类型的服务来检查您的企业票务系统并实施已批准的策略。而且您可能能够提供一个自动批准某些策略的界面(不允许所有,管理员允许所有,不否认适用于管理员等),但这取决于您对验证逻辑的信心以及您的业务需求是。

除了其他答案之外,IAM 访问分析器是一项有趣的服务,可能对您有所帮助。这是一种快速且免费的方式来审核对 AWS 资源的跨账户访问它涵盖了 S3 存储桶、KMS 密钥、Lambda 函数和 SQS 队列。它还涵盖了允许跨账户访问(使用信任策略)的 IAM 角色。以下是 Access Analyzer 中结果的屏幕截图:

在此处输入图像描述

在这里,“crossAccountS3”角色允许另一个帐户假设自己并获得对附加到该角色的策略所允许的资源的访问权限。

此解决方案仅涵盖资源策略可能的滥用案例之一,但绝对有用。