如何用IAM角色限制AWS Batch的权限
如何用IAM角色限制AWS Batch的权限

如何用IAM角色限制AWS Batch的权限

内容纲要

简介

AWS Batch是一个托管式的批处理服务,可以轻松地在AWS云上运行批处理作业。我们可以用Docker镜像定义任务,Batch会自动调度任务运行。之前写过batch的使用教程,具体可以参考这篇文章。 使用AWS Batch运行Python脚本(保姆级教程)

但是,如果直接给Batch服务角色全 Administrator 权限,或者用我们自己的账号来制作镜像和上传的话,这会带来安全风险。攻击者可能利用Batch服务权限获取云上其它敏感资源。因此,最佳实践是遵循最小权限原则,限制Batch只能访问必要的资源。

这次将介绍如何通过IAM角色,将Batch对S3和ECR的访问权限限制到所需的最小范围。

IAM角色设置

第一步是创建一个IAM账户,设置下面的权限给他。策略中我们只允许s3:GetObject、s3:PutObject等权限,同时也允许ECR的docker镜像pull权限。{
   "Version": "2012-10-17",
   "Statement": [
      {
           "Effect": "Allow",
           "Action": [
               "s3:GetObject",
               "s3:PutObject"
          ],
           "Resource": "arn:aws:s3:::mybucket/*"
      },
      {
           "Effect": "Allow",
           "Action": [
               "ecr:CompleteLayerUpload",
               "ecr:GetAuthorizationToken",
               "ecr:UploadLayerPart",
               "ecr:InitiateLayerUpload",
               "ecr:BatchCheckLayerAvailability",
               "ecr:PutImage"
          ],
           "Resource": "*"
      }
  ]
}

这样,我们就创建好一个只有受限S3和ECR权限的IAM账户。

每次要使用它的时候直接应用环境变量即可。

export AWS_ACCESS_KEY_ID=AKIAIxxxxxxxxx
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMxxxxxxxxx

每次需要更新镜像的内容我们只需要把需要替换的文件从指定的S3桶里下载到服务器里,然后编译镜像上传即可,限制权限是一个好习惯。

总结

通过为Batch设置最小权限的IAM角色,我们可以避免批任务获得了过多的云权限。这减小了安全风险,是一个好习惯,虽然设置这些很麻烦,但是如果是生产环境还是很有必要的。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注