使用默认 kms 密钥进行 s3 跨帐户访问

2024-01-17

我的账户中有一个 s3 存储桶,默认启用了 SSEaws-kms钥匙。我希望向我的存储桶提供另一个帐户的读取权限。

我已点击以下链接来提供访问权限:https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-denied-error-s3/ https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-denied-error-s3/

我在用aws s3 ls <s3://bucket_name> and aws s3 cp <path to s3 object> .下载对象

我尝试在未启用 SSE 的情况下提供对存储桶的跨账户访问。我成功地检索了存储桶详细信息并下载了对象。但是,当我尝试从启用了 SSE 的存储桶下载对象时,我得到了An error occurred (AccessDenied) when calling the GetObject operation: Access Denied例外。我可以列出启用 SSE 的存储桶中的对象,但不能下载它们。

我的存储桶政策:

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::<Account_B_AWS_Account_Id>:role/ReadOnly"
                ]
            },
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::<bucket-name>",
                "arn:aws:s3:::<bucket-name>/*"
            ]
        },
        {
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
              "AWS": [
                    "arn:aws:iam::<Account_B_AWS_Account_Id>:role/ReadOnly"
              ]
            },
            "Action": [
              "kms:Encrypt",
              "kms:Decrypt",
              "kms:ReEncrypt*",
              "kms:GenerateDataKey*",
              "kms:DescribeKey"
            ],
            "Resource": "*"
        }
    ]
}

账户中的 ReadOnly 角色拥有所有 aws 服务的读取权限。此外,我还为该角色附加了以下策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SomeProperites",
            "Effect": "Allow",
            "Action": [
                "s3:GetLifecycleConfiguration",
                "s3:ListBucketByTags",
                "s3:GetBucketTagging",
                "s3:GetInventoryConfiguration",
                "s3:GetObjectVersionTagging",
                "s3:GetBucketLogging",
                "s3:ListBucketVersions",
                "s3:GetAccelerateConfiguration",
                "s3:ListBucket",
                "s3:GetBucketPolicy",
                "s3:GetEncryptionConfiguration",
                "s3:GetObjectAcl",
                "s3:GetObjectVersionTorrent",
                "s3:GetBucketRequestPayment",
                "s3:GetObjectVersionAcl",
                "s3:GetObjectTagging",
                "s3:GetMetricsConfiguration",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketPublicAccessBlock",
                "s3:ListBucketMultipartUploads",
                "s3:GetBucketWebsite",
                "s3:GetBucketVersioning",
                "s3:GetBucketAcl",
                "s3:GetBucketNotification",
                "s3:GetReplicationConfiguration",
                "s3:ListMultipartUploadParts",
                "s3:GetObject",
                "s3:GetObjectTorrent",
                "s3:DescribeJob",
                "s3:GetBucketCORS",
                "s3:GetAnalyticsConfiguration",
                "s3:GetObjectVersionForReplication",
                "s3:GetBucketLocation",
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::<bucket-name>"
        },
        {
            "Sid": "SomePermission",
            "Effect": "Allow",
            "Action": [
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAllMyBuckets",
                "s3:ListJobs",
                "s3:HeadBucket"
            ],
            "Resource": "*"
        },
        {
            "Sid": "KMSWriteKey",
            "Effect": "Allow",
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        }
    ]
}

我相信由于 KMS 解密,我无法获取对象,因为我可以使用禁用 SSE 的存储桶进行下载。我的上述政策正确吗?如果使用默认 kms 密钥,我是否需要提供一些额外的权限?是否可以使用默认的 kms 密钥并提供跨帐户访问?


-> 使用默认 aws-kms 密钥启用 SSE

这是 AWS Managed KMS 密钥,您只能查看其密钥策略。您无法编辑其密钥策略。因此,您将无法使用 SSE-KMS AWS 托管密钥进行跨账户 s3 对象共享。

请切换使用SSE-KMS Customer Managed Key并授予跨账户本金descrypt所选 KMS CMK 中的操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用默认 kms 密钥进行 s3 跨帐户访问 的相关文章

随机推荐

  • Maven 版本控制最佳实践 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 更改 Maven 项目版本 发布此版本然后返回到的最佳方法是什么 SNAPSHOT发展 目前我正在做以下事情 检索当前版本 最有可能的是SNAP
  • 如何绘制多列的条形图 3D 投影

    我有一个表 其中包含根据两个不同参数的三个不同时间特征 我想在 x 轴和 y 轴上绘制这些参数 并在 z 轴上显示三个不同时间的条形 我创建了一个简单的条形图 其中绘制了其中一个时间特征 import numpy as np import
  • 是否可以将数据从 DelegatingHandler 传递到 ASP.NET Web API 中的控制器?

    我正在实现一个与授权相关的 DelegatingHandler 其中我从数据库加载 api 用户 调用者 配置文件 当授权成功时 我想将此实例传递给控制器 否则我必须再次加载它 有没有办法在不使用会话或依赖存储库缓存的情况下执行此操作 Ht
  • 当网格被过滤时,Kendo 工具栏 AddNew 按钮不起作用

    我有一个小的剑道网格 设置如下 以一种令人难以置信的神秘方式 添加新 的控制器操作 即BatchCreate仅当您在单击 添加新项 后单击另一个命令按钮时才会调用 例如 a 单击 添加新的 什么也没有发生 b 重新加载页面 点击 Add N
  • 了解第 3 方 iframe 安全性?

    Facebook 和其他公司提供了一些小的 iframe 片段 我可以将它们放入我的网站中 例子 我想知道的是 如果我把这段代码放在我这边 他们加载到我页面中的代码可以访问我页面的 DOM 吗 如果是的话 我看到一些安全问题 同样 Face
  • 在 Haskell 中模拟路径依赖类型

    这是我想做的事情的一个简化示例 假设你有一个HList对 let hlist HCons 1 1 HCons 0 2 HCons 0 1 5 HNil 现在我想写一个函数replaceAll它将用相同类型的第一个 值 替换给定类型的所有 键
  • 随机选择ArangoDB中的一个文档

    有没有办法使用 AQL 从集合中随机返回文档 我想创建一个随机图用于测试目的 我还没有弄清楚如何从集合中随机选择文档 我希望我能够做这样的事情 db query RETURN nodes RAND 0 LENGTH nodes toArra
  • 在 React Native 中如何更改 Android 上的根视图背景颜色?

    我在网上读过一些教程 但大部分都是关于 iOS 的 或者一些关于 Android 的 但是使用旧版本的 React 现在一切都变了 如果我打开 MainActivity java 只有一种方法 Override protected Stri
  • 使用 LDAP Active Directory 身份验证的 ActiveMQ Web 控制台

    努力让 ActiveMQ Web 控制台使用 LDAP 并根据 Active Directory 进行身份验证 启动 MQ 时没有错误 出现用户名 密码登录框提示 但在插入正确的凭据时没有进展 Version 5 15 6 登录配置 amq
  • 为什么 C++ 不需要“new”语句来初始化 std::vector?

    考虑 bar h class bar Standard stuff omitted std vector
  • 如何使用 Moq.Dapper 模拟 QueryMultiple

    我正在编写单元测试用例 并且我成功地编写了单元测试用例Query 但我无法编写单元测试用例QueryMultiple 对于查询我是这样写的 IEnumerable
  • 设置视图中的所有变量

    问题 如何轻松更改 ForEach 语句内单独视图中的所有变量 查看代码中的注释 ContentView State var isShowing false var body some View Toggle IsShowing isOn
  • 如何在 MongoDB 中创建“触发器”

    我想创建一个触发器 其中插入的每个子文档都会在其他集合中增加一个字段 用于生成该集合的子文档计数 我尝试使用 MapReduce 创建搜索 但对于数百万个注册表来说速度非常慢 注意 我使用 C 但如果您喜欢展示如何在 Bson 中执行操作
  • 在 iPhone 上播放背景音频

    如何在应用程序运行时播放背景音频 Thanks 好的 这是 iOS4 和 iOS5 上背景声音的解决方案 绝对适用于 iOS 5 0 1 我仅使用 AVPlayer 对其进行了测试 它可能也适用于 MPMusicPlayerControll
  • 无法在 JavaScript 中创建多个 if 条件?

    我完全不知道为什么这不起作用 对我来说毫无意义 这将返回 语法错误 解析错误 if this attr id search opening true return false 为了更好地衡量 我还尝试了以下方法 得到了相同的结果 if 1
  • 使用 OpenCV 进行图像 alpha 合成

    我想实施这些步骤 这是我的代码 import cv2 from skimage io import import numpy as np imA cv2 imread C jpg kernel np ones 3 3 np uint8 im
  • 如何为 Spring Boot 应用程序配置端口

    如何配置 Spring Boot 应用程序侦听的 TCP IP 端口 使其不使用默认端口 8080 As 文档中说 http docs spring io spring boot docs current reference htmlsin
  • 从邻接矩阵绘制图

    我正在 MATLAB 中寻找一个命令 它可以帮助我在给定邻接矩阵的情况下绘制图形 谁能帮我 此外 我需要一些图形工具来计算图形上点之间的最短距离 集合的直径 集合之间的距离等 谢谢 检查这个Matlab函数松下春菜 http nlab ee
  • 对 Laravel 中的可选字段应用“存在”验证

    我正在 Laravel 5 4 中的一个项目上工作 我想对两个可选字段执行 存在 验证规则 仅当提供值时 我已经尝试过以下方法 Define validation rules validator Validator make request
  • 使用默认 kms 密钥进行 s3 跨帐户访问

    我的账户中有一个 s3 存储桶 默认启用了 SSEaws kms钥匙 我希望向我的存储桶提供另一个帐户的读取权限 我已点击以下链接来提供访问权限 https aws amazon com premiumsupport knowledge c