You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AWS KMS密钥解密其他账户文件及跨账户权限问题咨询

使用账户A的KMS密钥解密账户B S3对象 & 切换角色后S3访问问题解决

一、解密账户B S3中用账户A KMS密钥加密的文件

跨账户KMS解密需要同时配置KMS密钥策略和S3权限:

  1. 更新账户A的KMS密钥策略
    确保密钥策略中允许需要解密的身份(你在账户A的用户/切换后的角色)执行kms:Decrypt操作。示例策略片段:

    {
      "Sid": "AllowCrossAccountDecrypt",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNT-A-ID:user/your-username"
      },
      "Action": "kms:Decrypt",
      "Resource": "*"
    }
    

    若用切换后的角色解密,将Principal替换为该角色的ARN即可。

  2. 配置账户B的S3权限
    要么在S3存储桶策略中添加允许你(或切换后的角色)执行s3:GetObject的语句,要么确保对象ACL授予你读取权限。存储桶策略示例:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::ACCOUNT-A-ID:user/your-username"
          },
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::bucket-name/*"
        }
      ]
    }
    
  3. 执行解密操作

    • CLI方式:直接拉取对象,AWS会自动调用KMS解密:
      aws s3 cp s3://bucket-name/encrypted-object ./local-file --profile account-a
      
    • 控制台/SDK:权限配置到位后,控制台下载或SDK获取对象时会自动完成解密流程。

二、切换账户A角色后无法访问账户B S3存储桶

核心原因是切换后的角色未被账户B的S3资源授权,按以下步骤排查修复:

  1. 检查切换后角色的权限策略
    确保角色的权限策略包含针对账户B存储桶的必要S3操作权限,示例:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": ["s3:ListBucket", "s3:GetObject"],
          "Resource": ["arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*"]
        }
      ]
    }
    
  2. 更新账户B的S3存储桶策略
    明确允许切换后角色的ARN访问目标存储桶,示例:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::ACCOUNT-A-ID:role/your-switched-role"
          },
          "Action": ["s3:ListBucket", "s3:GetObject"],
          "Resource": ["arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*"]
        }
      ]
    }
    
  3. 验证角色信任关系
    确认切换后的角色的信任关系允许你的原始身份(账户A的用户/角色)执行角色切换,信任关系示例:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::ACCOUNT-A-ID:user/your-username"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

相关官方文档

  • 《AWS KMS 跨账户密钥使用指南》
  • 《Amazon S3 跨账户访问配置》
  • 《AWS IAM 角色切换权限管理》

内容的提问来源于stack exchange,提问作者Herman Shynder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 13:23:19