当前位置: 首页 > 知识库问答 >
问题:

KMS加密后无法从S3下载文件

苍德寿
2023-03-14

使用terraform我能够创建S3桶与KMS加密启用。但是,当我试图从启用S3 KMS的bucket下载任何文件时,它都无法下载,因为访问被拒绝

download failed: s3://services-1234567890-cicd-storage/jars/jdbc-0.211.jar to utilities/jdbc-0.211.jar An error occurred (AccessDenied) when calling the GetObject operation: Access Denied
resource "aws_s3_bucket" "s3_bucket_two" {
  bucket = "dev-analytics-data"
#  bucket = "services-${lookup(var.aws_account_id, terraform.workspace)}-cicd-storage"
  acl    = "${var.acl}"
  versioning {
    enabled = "${var.enable_versioning}"
  }
  server_side_encryption_configuration {
    rule {
      apply_server_side_encryption_by_default {
        kms_master_key_id = "${data.terraform_remote_state.kms_s3.key_arn}"
        sse_algorithm     = "aws:kms"
      }
    }
  }
}
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::12345678910:role/iam_role_devops_engineer",
                    "arn:aws:iam:: 12345678910:role/EMR_AutoScaling_DefaultRole",
                    "arn:aws:iam:: 12345678910:role/EMR_DefaultRole",
                    "arn:aws:iam:: 12345678910:user/iam_user_cng_jenkins",
                    "arn:aws:iam:: 12345678910:role/iam_role_sftp",
                    "arn:aws:iam:: 12345678910:role/iam_role_jenkins_user",
                    "arn:aws:iam:: 12345678910:role/EMR_EC2_DefaultRole"
                ]
            },
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::services-12345678910-cicd-storage",
                "arn:aws:s3:::services-12345678910-cicd-storage/*"
            ]
        }
    ]
}

我也尝试通过aws cli上传,但仍然失败。

AWS s3 CP--SSE AWS:KMS--SSE-KMS-Key-ID ARN:AWS:KMS:EU-Central-1:1234567890:KEY/123ASDPS-AS34-AS23-ASAS-ASLKUI98393 SPARK-SQL-KINESIS2.11-2.3.1.JAR s3://Services-1234567890-CICD-Storage/tesie_jars/

共有1个答案

廖华翰
2023-03-14

您需要授权访问IAM策略中的KMS密钥。

我不能百分之百确定您需要哪些权限,但从这些权限开始(我碰巧知道这组可以工作,因为我从一个工作策略中复制了它,但它可能包括不需要的权限):

{
    "Effect": "Allow",
    "Action": [
        "kms:Decrypt",
        "kms:DescribeKey",
        "kms:Encrypt",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:GetKeyPolicy",
        "kms:ListGrants",
        "kms:ListKeyPolicies",
        "kms:ListRetirableGrants",
        "kms:ReEncryptFrom",
        "kms:ReEncryptTo"
    ],
    "Resource": "arn:aws:kms:REDACTED:REDACTED:key/REDACTED"
},
{
    "Effect": "Allow",
    "Action": [
        "kms:GenerateRandom",
        "kms:ListAliases",
        "kms:ListKeys"
    ],
    "Resource": "*"
}
 类似资料:
  • 我有一个配置了加密功能的存储桶: 加密密钥类型:AWS密钥管理服务密钥(SSE-KMS) 使用AWS托管密钥(AWS/s3)。Bucket加密配置: 我有一个nodejs项目,使用streams在S3 bucket上上传/下载文件。问题是,我可以成功上传,但当我尝试使用stream下载/获取文件时,它只会发出一次“data”事件,之后会发出“end”事件,但仍有数据需要使用,如下面的日志所示。你知

  • 我无法从亚马逊S3桶加载雪花中的外部表。外部表创建成功,但在运行select命令时,不会返回任何内容。奇怪的是COPY into命令对雪花中的同一个表起作用。 谢谢,纳维德

  • 我正在尝试使用AmazonS3服务器端加密(KMS)多部分上传一个文件。我有点困惑,我的代码中是否需要KMS键,如果需要,那么我如何将它添加到Java代码中呢? --更新私有静态void saveMultipartData(String clientRegion,String bucketName,String awsFilePath,File File){AmazonS3 s3client=Am

  • 运行上述代码后出现以下错误。请帮忙做这件事。。正在将源和目标文件名作为S3属性中的参数传递。。。 在处理上述异常时,发生了另一个异常: 回溯(最后一次调用):文件“C:\Cloudtail\CT\SQL Scripts\python\GRN\u S3\u dwnld.py”,第17行,除了botocore.exception.ClientErrors as e:NameError:未定义名称“bo

  • 我已使用IAM角色启动了一个ec2实例,并将以下策略与IAM角色关联。 然而,当我试图从ec2-实例中使用aws cli下载文件时,我一直拒绝访问。 当我模拟策略并对bucket中的对象执行操作时,会收到消息“allowed”。当我访问时,我可以看到正确的实例配置文件附在实例上http://169.254.254/latest-metadata/iam/info 我有什么明显的遗漏吗?

  • 根据AWS文档中提供的资源,可以通过以下代码下载对象: 编辑 我将更改为,它打开了pdf,但现在我需要下载它

  • 我目前正在S3中存储和下载我的Thymeleaf模板。 我使用以下函数从S3检索模板: 执行此操作后,文件将成功下载到所需位置。 但是当试图从FlyingSaucer PDF生成器访问文件时,该文件不存在,尽管它已经在FILE_LOCATION_PATH下载。(我可以打开文件...文件在那里,但函数看不到它) 当我一次又一次地运行程序时,我得到了相同的结果。但是当我停止程序并再次运行它时,一切都正

  • 我使用Maven和surefire插件通过扩展AbstractTestNGSpringContextTests来运行TestNG测试,结果显示,即使上下文在类路径中也没有加载,并且测试在我的ide中正常工作,但在Maven中不行。 @contextConfiguration(locations=Array(“classpath*:/com/gottex/gottware/server/offlin