【问题标题】:Jobs from specific AWS Batch permissions来自特定 AWS Batch 权限的作业
【发布时间】:2022-01-26 09:38:58
【问题描述】:

如何只允许来自某个 AWS Batch 队列(并基于特定的作业描述)的作业发布到特定的 SNS 主题?

我想通过以下声明将 IAM 政策附加到作业:

    {
      "Effect": "Allow",
      "Action": "sns:Publish",
      "Resource": ["<arn of the specific SNS topic"]
      "Condition": {"ArnEquals": {"aws:SourceArn": "arn:aws:???"}}

    }

但是源 ARN 应该是什么?作业队列的 ARN,作业定义的 ARN?或者也许这应该完全不同?

【问题讨论】:

    标签: amazon-web-services amazon-iam aws-batch aws-policies


    【解决方案1】:

    我在处理在 Fargate 容器中执行的 AWS Batch 作业时也有类似的经历,这些容器在分配角色和权限的范围内遵循与 ECS 相同的原则。

    如果您要通过容器内执行的代码将消息发布到特定主题,那么您应该创建一个具有必要权限的角色,然后在您的作业定义的 JobRoleArn property 中使用其 ARN。

    例如(下面的代码可能有小错误,但我只是想在这里解释一下这个概念):

    角色云形成:

    "roleresourceID": {
          "Type": "AWS::IAM::Role",
          "Properties": {
            "AssumeRolePolicyDocument": {
              "Statement": [
                {
                  "Action": "sts:AssumeRole",
                  "Effect": "Allow",
                  "Principal": {
                    "AWS": "*"
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "RoleName": "your-job-role"
          }
        }
    

    附加到角色的策略:

    "policyresourceid": {
          "Type": "AWS::IAM::Policy",
          "Properties": {
            "PolicyDocument": {
              "Statement": [
                 {
                   "Action": "sns:Publish",
                   "Effect": "Allow",
                   "Resource": "<arn of the specific SNS topic>"
                 }
              ],
              "Version": "2012-10-17"
            },
          "PolicyName": "your-job-role-policy",
          "Roles": [
              {
                "Ref": "roleresourceID"
              }
            ]
          }
       }
    

    最后将角色附加到工作定义:

    ....other job definition properties
    
    "JobRoleArn": {
          "Fn::GetAtt": [
             "roleresourceID",
             "Arn"
           ]
       }
    

    当然,您可以按照自己喜欢的方式构建和格式化角色和策略,这个解释的主要思想是您需要使用工作定义的JobRoleArn 属性附加适当的角色。

    【讨论】:

    • 好的,所以如果到目前为止我对几个不同的批处理作业使用相同的作业定义,我必须为我的特定批处理作业创建新的作业定义,新角色具有发布到特定 SNS 的策略主题权限。谢谢!
    猜你喜欢
    • 2017-09-28
    • 2021-05-02
    • 2021-01-28
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    相关资源
    最近更新 更多