我们在someAWSAccount
中假设someaccountrole
的实例配置文件名称为p
,在AWS中。
在该帐户(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
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
分配此部署者策略?
或
您是否建议替代方法?
答案 0 :(得分:1)
我不确定您要在这里实现什么目标。因为我们在谈论权限边界,所以我们仅限制访问,而不授予任何权限。
如果您有开发人员,并且想要限制他们访问某些资源以及他们创建的具有这些限制的lambda函数,那么最安全的方法(如果适用于您的用例)可能是创建AWS Organizations ,在组织内创建开发帐户,并使用SCP(服务控制策略)限制整个帐户。这样,无论将哪些权限添加到您的开发人员(该帐户中的IAM用户(包括root),还是添加到这些lambda函数的任何IAM角色),他们都将无法执行超出该帐户或组织单位所附SCP规定的任务该帐户是其中的一部分。
基本上,您是将权限范围从特定的用户或角色转移到整个帐户,因此您不必担心该帐户中的某人不会兑现它。