如何要求其他 AWS 帳戶的使用者使用 MFA 存取我的 Amazon S3 儲存貯體?

1 分的閱讀內容
0

我想要求其他使用者使用多重要素驗證 (MFA) 裝置來存取我的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。我該如何操作?

解決方法

將 MFA 相關條件新增至儲存貯體政策,要求其他 AWS 帳戶的使用者使用 MFA 裝置進行驗證。

開始之前,其他 AWS 帳戶的使用者必須符合以下要求:

  • 他們必須擁有存取 Amazon S3 的權限。例如,如果使用者的 AWS 身分和存取管理 (IAM) 政策中包含了 AmazonS3FullAccess AWS 受管政策,則符合此要求。
  • 他們必須有附加的 IAM 政策,允許他們調用 GetSessionToken
  • 他們必須設定 MFA 裝置,以便搭配 IAM 身分使用。

接下來,建立儲存貯體政策使用 aws:MultiFactorAuthPresentaws: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

AWS 官方
AWS 官方已更新 2 年前