我的 Amazon Simple Storage Service (Amazon S3) 儲存貯體使用 AWS Key Management Service (KMS) 客戶管理金鑰加密。當來自其他 AWS 帳戶的使用者嘗試存取儲存貯體中的物件時,他們遇到「拒絕存取」錯誤。
簡短描述
若要將帳戶 A 中 AWS KMS 加密儲存貯體的存取權授予帳戶 B 中的使用者,請套用下列權限:
- 帳戶 A 中的 Amazon S3 儲存貯體政策必須授予對帳戶 B 的存取權。
- 帳戶 A 中的 AWS 受管金鑰必須與帳戶 A 中的 S3 儲存貯體位於相同的 AWS 區域。
- 帳戶 A 中的 AWS KMS 金鑰政策必須向帳戶 B 中的使用者授予存取權。
- 帳戶 B 中的 AWS Identity and Access Management (IAM) 政策必須向使用者授予對儲存貯體以及帳戶 A 中金鑰的存取權。
若要疑難排解**「拒絕存取」**錯誤,請確認這些權限設定正確。
重要: 對於客戶受管金鑰政策,您只能從建立該政策的 AWS 帳戶變更金鑰政策。
您必須使用完全符合資格的 KMS 金鑰 ARN 來進行儲存貯體加密設定。如果您使用 KMS 金鑰別名,則 AWS KMS 僅在擁有儲存貯體 (帳戶 A) 的帳戶內解析金鑰。
以下是您用於儲存貯體加密的完全合格 AWS KMS 金鑰 ARN 的範例:
"arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
以下是您不用於儲存貯體加密的 AWS KMS 金鑰別名的範例:
arn:aws:kms:us-west-2:111122223333:alias/alias-name
解決方法
帳戶 A 中的儲存貯體政策必須向帳戶 B 中的使用者授予存取權
在帳戶 A 中,檢閱儲存貯體政策以確認存在允許從帳戶 B 的帳戶 ID 存取的陳述式。
例如,下列儲存貯體政策允許 s3:GetObject 存取帳戶 ID 111122223333:
{
"Id": "ExamplePolicy1",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ExampleStmt1",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"Principal": {
"AWS": [
"111122223333"
]
}
}
]
}
帳戶 A 中的 AWS KMS 金鑰政策必須向帳戶 B 中的使用者授予存取權
AWS KMS 金鑰政策必須向帳戶 B 中的使用者授予執行 kms:Decrypt 動作的權限。例如,若要僅向一個 IAM 使用者或角色授予金鑰存取權,請使用類似下列的金鑰政策:
{
"Sid": "Allow use of the key",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:role/role_name"
]
},
"Action": [
"kms:Decrypt"
],
"Resource": "*"
}
在帳戶 A 中,使用 AWS 管理主控台政策檢視檢閱金鑰政策。在金鑰政策中,找到 "Sid": "Allow use of the key"。然後,確認帳戶 B 中的使用者在該陳述式中列為主體。
如果您沒有看到陳述式 "Sid": "Allow use of the key",則使用 AWS 管理主控台預設檢視來檢閱金鑰政策。然後,將帳戶 B 的帳戶 ID 新增為可存取金鑰的外部帳戶。
帳戶 B 中的 IAM 使用者政策必須向使用者授予對儲存貯體和帳戶 A 中金鑰的存取權
在帳戶 B 中,完成下列步驟:
- 開啟 IAM 主控台。
- 開啟與帳戶 B 中使用者相關聯的 IAM 使用者或角色。
- 檢閱套用至 IAM 使用者或角色的權限政策清單。
- 確認有套用的政策可授予對儲存貯體和金鑰的存取權。
**注意:**如果帳戶 B 中的 IAM 使用者或角色已經具有管理員存取權,則您不需要授予對金鑰的存取權。下列範例政策向帳戶 B 中的 IAM 使用者授予對物件和 KMS 金鑰 (用於解密儲存貯體中的物件) 的存取權:
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "ExampleStmt1",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
},
{
"Sid": "ExampleStmt2",
"Action": [
"kms:Decrypt"
],
"Effect": "Allow",
"Resource": "arn:aws:kms:us-west-2:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}
]
}
如需如何新增或更正 IAM 使用者權限的詳細資訊,請參閱變更 IAM 使用者的權限。
相關資訊
AWS 政策產生器