【问题标题】:AWS lambda problem with deployment - not enough permissionsAWS lambda 部署问题 - 权限不足
【发布时间】:2021-10-24 19:15:16
【问题描述】:

当我尝试从 Visual Studio 部署 AWS lambda 时出现此错误

Fetching ECR authorization token to use to login with the docker CLI
Error logging on with the docker CLI: User: arn:aws:sts::123456789012:assumed-role/@Infra/aws-toolkit-visualstudio-637706142753914780 is not authorized to perform: ecr:GetAuthorizationToken on resource: * because no identity-based policy allows the ecr:GetAuthorizationToken action

我使用的 IAM 角色具有以下权限:

AmazonS3FullAccess

AmazonAPIGateway 管理员

AmazonElasticContainerRegistryPublicFullAccess

AWSLambda_FullAccess

如果我通过添加 AdministratorAccess 扩展此列表,则部署成功,但我想将权限限制为仅需要的权限。

知道如何扩展权限来解决这个问题吗? 我已经有了 AmazonElasticContainerRegistryPublicFullAccess,所以我希望它应该足够了。

出于安全考虑,我在错误消息中传递了假数字。

【问题讨论】:

  • 你需要像AmazonEC2ContainerRegistryPowerUser 这样的东西。正如错误消息所说,AmazonElasticContainerRegistryPublicFullAccess 不提供将私有图像推送到 ECR 的访问权限。
  • 检查 AmazonElasticContainerRegistryPublicFullAccess 的实际作用,可以在 IAM 控制台中轻松完成,然后检查 ecr:GetAuthorizationToken 是否在 * 上被授予 - 不要只是期待什么。
  • 进展如何?仍然不清楚如何“将权限限制为仅需要的权限”?
  • 添加 AmazonEC2ContainerRegistryPowerUser 解决了这个问题。

标签: amazon-web-services aws-lambda


【解决方案1】:

您只需ecr:GetAuthorizationToken 权限即可将inline policy 添加到您的角色:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "ecr:GetAuthorizationToken",
            "Resource": "*"
        }
    ]
}

不要更改"Resource": "*"ecr:GetAuthorizationToken 应该是这样的。

如果您传递此错误,并获得其他访问拒绝,请将缺少的权限添加到策略中。

【讨论】:

  • 资源token的arn是否经常变化?
  • @lynkfox GetAuthorizationToken 没有资源。因此使用了*
  • 很高兴知道。谢谢!
【解决方案2】:

添加 AmazonEC2ContainerRegistryPowerUser 解决了这个问题。

【讨论】:

    猜你喜欢
    • 2020-07-17
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 2013-08-29
    • 2018-07-19
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    相关资源
    最近更新 更多