AWS S3 默认加密可以使用另一个账户拥有的 KMS 密钥吗?
Can AWS S3 default encryption use a KMS key owned by another account?
我想使用相对较新的 S3 默认加密 属性 来确保写入 S3 存储桶中特定前缀的所有对象都被加密。在这种情况下,我需要能够将另一个 AWS 账户拥有的 KMS 密钥指定为默认密钥。这可能吗?如果是:
如何指定密钥(虽然我最初尝试使用控制台
Terraform 是最终目标),
给AWS S3够不够
是否允许使用外国拥有的 KMS 密钥进行加密?或者是
角色上传文件也需要权限?
是的,这是可能的。对于下面的步骤,我们假设 S3 存储桶位于账户 A 中,由您控制,KMS 密钥位于账户 B 中,由您的客户控制,并且调用 API 将对象上传到 S3由账户 A 中指定的 IAM 呼叫者(这是我对你的问题的理解,如果我错了请纠正我)。步骤:
账户 B:
- 您的客户将像往常一样创建 KMS 客户主密钥。唯一需要注意的是,在创建期间(或创建密钥后),
Key Users
的权限需要包含外部 AWS 账户(账户 A)。要在创建密钥后在控制台上执行此操作,只需 select 密钥,转到 Key Users
、External accounts
部分,单击 Add external account
,粘贴 12 位 AWS从帐户 A 中提取帐户 ID 并保存。结果将类似于 arn:aws:iam::ACCOUNT_ID:root
。这使账户 A 的管理员可以访问密钥,他们可以为账户 A 中定义的 users/roles 授予权限。记下 KMS 密钥 ARN,您将在下一步中需要它。
账户 A:
- 您可以将默认 S3 存储桶加密定义为
AWS-KMS
、select Custom KMS ARN
,然后从账户 B 中创建的 KMS 密钥粘贴 ARN。根据您所写的内容,这不是您想要的,所以下一步是:
- 您可以在上传操作期间为每个对象定义加密密钥。这在控制台中是微不足道的(与上述步骤相同);它也可以使用任何 APIs 或 SDK。有关详细信息,请参阅 this link,特别是 "Server-Side-Encryption-Specific Request Headers"。
最后一步:
- 您想将密钥的使用锁定为仅进行上传的 IAM role/user,因此,请确保将 IAM 策略附加到 role/user 授予访问权限。资源将是 KMS 密钥的 ARN。
如果您的客户想要 "lock down" 使用数据,他们需要做的就是暂时禁用密钥(使用 KMS APIs 或 AWS 控制台),and/or 安排密钥删除(但这不可能被撤消)。
我想使用相对较新的 S3 默认加密 属性 来确保写入 S3 存储桶中特定前缀的所有对象都被加密。在这种情况下,我需要能够将另一个 AWS 账户拥有的 KMS 密钥指定为默认密钥。这可能吗?如果是:
如何指定密钥(虽然我最初尝试使用控制台 Terraform 是最终目标),
给AWS S3够不够 是否允许使用外国拥有的 KMS 密钥进行加密?或者是 角色上传文件也需要权限?
是的,这是可能的。对于下面的步骤,我们假设 S3 存储桶位于账户 A 中,由您控制,KMS 密钥位于账户 B 中,由您的客户控制,并且调用 API 将对象上传到 S3由账户 A 中指定的 IAM 呼叫者(这是我对你的问题的理解,如果我错了请纠正我)。步骤:
账户 B:
- 您的客户将像往常一样创建 KMS 客户主密钥。唯一需要注意的是,在创建期间(或创建密钥后),
Key Users
的权限需要包含外部 AWS 账户(账户 A)。要在创建密钥后在控制台上执行此操作,只需 select 密钥,转到Key Users
、External accounts
部分,单击Add external account
,粘贴 12 位 AWS从帐户 A 中提取帐户 ID 并保存。结果将类似于arn:aws:iam::ACCOUNT_ID:root
。这使账户 A 的管理员可以访问密钥,他们可以为账户 A 中定义的 users/roles 授予权限。记下 KMS 密钥 ARN,您将在下一步中需要它。
账户 A:
- 您可以将默认 S3 存储桶加密定义为
AWS-KMS
、selectCustom KMS ARN
,然后从账户 B 中创建的 KMS 密钥粘贴 ARN。根据您所写的内容,这不是您想要的,所以下一步是: - 您可以在上传操作期间为每个对象定义加密密钥。这在控制台中是微不足道的(与上述步骤相同);它也可以使用任何 APIs 或 SDK。有关详细信息,请参阅 this link,特别是 "Server-Side-Encryption-Specific Request Headers"。
最后一步:
- 您想将密钥的使用锁定为仅进行上传的 IAM role/user,因此,请确保将 IAM 策略附加到 role/user 授予访问权限。资源将是 KMS 密钥的 ARN。
如果您的客户想要 "lock down" 使用数据,他们需要做的就是暂时禁用密钥(使用 KMS APIs 或 AWS 控制台),and/or 安排密钥删除(但这不可能被撤消)。