我们someAWSAccount
假设 AWS 中的实例配置文件名称p
someaccountrole
。
按名称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 中指定的操作。
基本上,您将权限边界从特定用户或角色移动到整个帐户,因此您不必担心该帐户中的某个人不会遵守它。