我想要求其他使用者使用多重要素驗證 (MFA) 裝置來存取我的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。我該如何操作?
解決方法
將 MFA 相關條件新增至儲存貯體政策,要求其他 AWS 帳戶的使用者使用 MFA 裝置進行驗證。
開始之前,其他 AWS 帳戶的使用者必須符合以下要求:
- 他們必須擁有存取 Amazon S3 的權限。例如,如果使用者的 AWS 身分和存取管理 (IAM) 政策中包含了 AmazonS3FullAccess AWS 受管政策,則符合此要求。
- 他們必須有附加的 IAM 政策,允許他們調用 GetSessionToken。
- 他們必須設定 MFA 裝置,以便搭配 IAM 身分使用。
接下來,建立儲存貯體政策使用 aws:MultiFactorAuthPresent 或 aws:MultiFactorAuthAge 條件。這些條件會判定使用者是否已透過 MFA 裝置進行驗證。
例如,假設您僅在使用者使用 MFA 裝置進行驗證後才允許其執行特定動作。您可以分兩部分撰寫儲存貯體政策:
1. 第一部分可以在使用者未使用 MFA 進行驗證 (未滿足條件 "aws:MultiFactorAuthPresent": "false") 時,明確拒絕這些動作,如下所示:
{
"Version": "2012-10-17",
"Id": "Policy201612130001aa",
"Statement": [
{
"Sid": "Stmt201612130001ab",
"Effect": "Deny",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::example.accounta.bucket/*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
},
...
在此範例中,我們拒絕使用者執行 s3:PutObject、s3:PutObjectAcl 和 s3:DeleteObject 動作。
2. 政策的第二部分可以在使用者使用 MFA 進行驗證 (未滿足條件 "aws:MultiFactorAuthPresent": "false") 時,明確允許這些動作:
...
{
"Sid": "Stmt201612130001ac",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::example.accounta.bucket",
"arn:aws:s3:::example.accounta.bucket/*"
]
}
]
}
將類似的儲存貯體政策新增至儲存貯體後,使用者可以執行 get-session-token AWS Command Line Interface (AWS CLI) 命令。get-session-token 命令獲取存取儲存貯體中資源所需的憑證。此命令要求使用者提供下列資訊:
- 由 MFA 裝置產生的臨時代碼
- 硬體 MFA 裝置的裝置序號,或軟體 MFA 裝置的 Amazon Resource Name (ARN)
注意: 如果您在執行 AWS CLI 命令時收到錯誤訊息,請確定您使用的是最新版本的 AWS CLI。
作為取得憑證的另一種方式,使用者可以選擇將暫時憑證匯出為環境變數。
相關資訊
儲存貯體政策範例
設定 AWS CLI