如何设计 SAM 部署程序策略?以强制 SAM 生成的 AWS 资源位于 PermissionBoundary 中



我们someAWSAccount假设 AWS 中的实例配置文件名称psomeaccountrole

按名称some-permission-boundary在此帐户中创建托管策略(someAWSAccount)。下面提到了在此帐户中创建此边界策略的目的。


要求是,

Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function 
Properties:
CodeUri: hello-world/
Handler: app.LambdaHandler
Runtime: nodejs8.10
Events:
MySQSEvent:
Type: SQS
Properties:
Queue: !GetAtt SomeQueue.Arn
BatchSize: 10
PermissionsBoundary: "arn:aws:iam::${AWS::AccountId}:policy/some-permission-boundary"
SomeQueue:
Type: AWS::SQS::Queue
通过强制 SAM 模板将

PermissionsBoundary: "arn:aws:iam::${AWS::AccountId}:policy/some-permission-boundary"作为Properties列表的一部分,对从上述SAM 模板生成的 AWS 资源强制实施某些规则

以便创建的任何 AWS 资源类型(如 Lambda、SQS、角色、策略等)

sam deploy --template-file above-SAM-template --stack-name somestack --profile p

应符合arn:aws:iam::${AWS::AccountId}:policy/some-permission-boundary中提到的规则


开发人员编写这些 SAM 临时,安全团队需要确保sam deploy在此PermissionsBoundary属性成为 SAM 模板Properties列表的一部分之前不起作用。

因此,为此,我们正在考虑在someAWSAaccount中设计另一个托管策略,以确保如果 SAM 模板没有以下条目sam deploy则失败:sam deploy --template-file above-SAM-template --profile p


部署者策略(托管策略)应该是什么样子的,以强制执行此规则?应为此部署程序策略分配哪些Principal

您是否建议使用替代方法?

我不确定你到底想在这里实现什么。由于我们谈论的是权限边界,因此我们只是限制访问,而不授予任何权限。

如果您有开发人员,并且想要限制他们访问某些资源以及他们创建的 lambda 函数以具有这些限制,那么最安全的方法(如果适用于您的使用案例)可能是创建 AWS 组织,在组织内创建开发账户并使用 SCP(服务控制策略)来限制整个账户。这样,无论向您的开发人员(该账户中的 IAM 用户(包括根)添加了哪些权限,也无论向这些 lambda 函数添加的任何 IAM 角色,他们都无法执行的超出附加到该账户或该账户所属组织单位的 SCP 中指定的操作。

基本上,您将权限边界从特定用户或角色移动到整个帐户,因此您不必担心该帐户中的某个人不会遵守它。

相关内容

  • 没有找到相关文章

最新更新