如何设计SAM部署者策略?强制将SAM生成的AWS资源强制置于PermissionBoundary

时间:2019-07-28 01:53:53

标签: amazon-web-services security amazon-iam aws-serverless aws-sam

我们在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

通过强制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分配此部署者策略?

您是否建议替代方法?

1 个答案:

答案 0 :(得分:1)

我不确定您要在这里实现什么目标。因为我们在谈论权限边界,所以我们仅限制访问,而不授予任何权限。

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

基本上,您是将权限范围从特定的用户或角色转移到整个帐户,因此您不必担心该帐户中的某人不会兑现它。