如何设计SAM部署政策? 执行SAM生成AWS资源是在PermissionBoundary(Ho

2019-10-29 16:10发布

我们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模版生成的AWS资源,通过强制SAM模版有 PermissionsBoundary: "arn:aws:iam::${AWS::AccountId}:policy/some-permission-boundary"作为其一部分Properties列表,

因此,任何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 tempates和安全团队需要确保sam deploy不起作用,直到此PermissionsBoundary属性是的一部分Properties SAM模版的名单。

因此,对于这一点,我们正在考虑设计在另一个管理政策someAWSAaccount是确保sam deploy失败,如果SAM模版没有这个条目: sam deploy --template-file above-SAM-template --profile p


应该在部署策略(管理策略)是什么样子的,强制执行这个规则? 这Principal应获得分配与此部署的政策?

要么

你建议的替代方法?

Answer 1:

我不知道究竟你正试图在这里实现。 由于我们正在谈论的权限边界,我们只限制访问,不授予任何权限。

如果你有开发者,你想有机会接触到一些资源,以及为他们创造有这些限制,则可能是最安全的方式(如果适用于你的使用情况)是创建AWS组织lambda函数限制他们,创造发展组织和使用SCP(业务控制策略)帐户内,以限制整个帐户。 这样一来,无论哪个权限添加到您的开发者(IAM用户在该账户包括root)或任何IAM角色添加到这些lambda函数,他们将永远无法做多附属于该帐户或组织单元SCP中规定该帐户的一部分。

基本上,你正在从特定用户或角色对整个帐户权限边界,所以你不必担心有人在该帐户是不会兑现它。



文章来源: How to design SAM deployer policy? to enforce SAM generated AWS resources to be in PermissionBoundary