本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon EC2:特定 EC2 操作需要 MFA (GetSessionToken)
此範例說明如何建立以身分識別為基礎的政策,以便完整存取 Amazon EC2 中的所有 AWS API 操作。不過,如果未透過多重要素驗證 (MFA) 來對使用者進行驗證,此政策會明確拒絕對 StopInstances
和 TerminateInstances
API 操作的存取。若要以程式設計的方式執行,使用者必須在呼叫 SerialNumber
操作時包含選用 TokenCode
和 GetSessionToken
值。這個操作會傳回透過使用 MFA 驗證的臨時憑證。若要進一步瞭解 GetSessionToken,請參閱— GetSessionToken 不信任環境中使用者的暫時憑證。
此政策的功能為何?
-
AllowAllActionsForEC2
陳述式會允許所有 Amazon EC2 動作。 -
MFA 內容遺失時,
DenyStopAndTerminateWhenMFAIsNotPresent
陳述式會拒絕StopInstances
和TerminateInstances
動作。這表示當多重驗證內容遺失 (表示未使用 MFA) 時,動作遭拒。拒絕會覆寫允許。
注意
MultiFactorAuthPresent
陳述式中 Deny
的條件檢查不應該是 {"Bool":{"aws:MultiFactorAuthPresent":false}}
,因為該索引鍵不存在,並且在不使用 MFA 時無法評估。因此,在檢查值之前,使用 BoolIfExists
檢查來查看索引鍵是否存在。如需更多詳細資訊,請參閱 ... IfExists 條件運算子。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAllActionsForEC2", "Effect": "Allow", "Action": "ec2:*", "Resource": "*" }, { "Sid": "DenyStopAndTerminateWhenMFAIsNotPresent", "Effect": "Deny", "Action": [ "ec2:StopInstances", "ec2:TerminateInstances" ], "Resource": "*", "Condition": { "BoolIfExists": {"aws:MultiFactorAuthPresent": false} } } ] }