View a markdown version of this page

AWS 登入條件金鑰參考 - AWS 登入

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS 登入條件金鑰參考

此頁面列出您可以在 AWS 登入資源型政策和資源控制政策 (RCPs) 中使用的條件金鑰,並顯示每個金鑰適用的評估階段和動作。只有 signin:PrincipalArn 專屬 AWS 於 Sign-In;其他則是 AWS 全域條件金鑰。如需全域金鑰定義,請參閱AWS 全域條件內容金鑰

如需服務授權參考中動作和條件索引鍵的完整清單,請參閱 AWS Sign-In 的動作、資源和條件索引鍵

網路型條件金鑰

這些條件索引鍵會檢查請求的來源。 AWS 登入會針對資源型政策和 RCPs 中的所有 AWS 登入動作 (signin:AuthorizeOAuth2Accesssignin:Authenticatesignin:CreateOAuth2Token) 進行評估。

網路型條件金鑰
條件鍵 運算子 說明 使用規則
aws:SourceIp IpAddress, NotIpAddress 公有 IP 地址或 CIDR 範圍 當請求使用 VPC 端點時不存在。在相同陳述式中與 VPC 型條件結合使用IfExists運算子。
aws:SourceVpc StringEquals, StringNotEquals VPC ID (vpc-xxxxxxxx) 只有在請求使用 VPC 端點時才會顯示。搭配 使用 aws:RequestedRegion以防止跨區域 VPC ID 衝突。
aws:SourceVpce StringEquals, StringNotEquals VPC 端點 ID (vpce-xxxxxxxx) 只有在請求使用 VPC 端點時才會顯示。
aws:VpcSourceIp IpAddress, NotIpAddress VPC 內的私有 IP 一律使用 aws:VpcSourceIp條件金鑰搭配 aws:SourceVpcaws:SourceVpce條件金鑰。
aws:RequestedRegion StringEquals, StringNotEquals 目標 AWS 區域碼 建議在使用 時aws:SourceVpc防止跨區域 VPC ID 衝突。您可以指定多個區域。
重要

單一請求包含 aws:SourceIp(公有網路) 或 aws:SourceVpc(VPC 端點),而非兩者。撰寫涵蓋兩個路徑的拒絕政策時,請使用IfExists運算子 (例如 NotIpAddressIfExists) 或建立個別的陳述式。

身分型條件索引鍵

這些條件索引鍵會檢查提出請求的人員。它們僅適用於驗證後動作 (signin:AuthorizeOAuth2Accesssignin:CreateOAuth2Token),其中已建立主體身分。

身分型條件索引鍵
條件鍵 運算子 說明 範例
aws:PrincipalArn ArnEquals, ArnLike, ArnNotEquals, StringEquals, StringLike 已驗證 IAM 主體的 ARN arn:aws:iam::123456789012:user/alice, arn:aws:iam::123456789012:role/Admin
aws:PrincipalAccount StringEquals, StringNotEquals AWS 委託人的帳戶 ID 123456789012

服務特定條件金鑰:signin:PrincipalArn

下列條件金鑰專屬 AWS 於 Sign-In,不是全域 AWS 金鑰。僅在驗證前評估期間可用。在身分驗證完成之前signin:PrincipalArn,使用 識別起始登入的委託人。這是 的預先驗證對等項目aws:PrincipalArn,在驗證之後才能使用。

運算子

ARN 運算子 (ArnEqualsArnLikeArnNotEqualsArnNotLike) 和字串運算子 (StringEqualsStringLike)。

可用性

AWS 登入會在驗證前階段 (signin:Authenticate動作) 的請求內容中包含此金鑰。它不適用於驗證後動作 (signin:AuthorizeOAuth2Accesssignin:CreateOAuth2Token)。

資料類型

ARN。使用 ARN 運算子而非字串運算子。

值類型

單一值。

支援於

以資源為基礎的政策和 RCPs。

使用 ARN 運算子來比較值。您可以指定下列委託人類型:

  • AWS 帳戶 根使用者 (arn:aws:iam::123456789012:root)

  • IAM 使用者 (arn:aws:iam::123456789012:user/user-name)

  • IAM 角色 (arn:aws:iam::123456789012:role/role-name)

使用案例:將排除的主體身分排除在網路限制之外,防止鎖定,同時仍對所有其他存取嘗試強制執行網路控制。

範例 – 拒絕來自未經授權網路的預先驗證存取,根使用者除外:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": ["signin:Authenticate"], "Resource": "*", "Condition": { "ArnNotEquals": { "signin:PrincipalArn": "arn:aws:iam::123456789012:root" }, "NotIpAddress": { "aws:SourceIp": "203.0.113.0/24" }, "StringEquals": { "aws:ResourceAccount": "123456789012" } } }, { "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": ["signin:CreateOAuth2Token", "signin:AuthorizeOAuth2Access"], "Resource": "*", "Condition": { "ArnNotEquals": { "aws:PrincipalArn": "arn:aws:iam::123456789012:root" }, "NotIpAddress": { "aws:SourceIp": "203.0.113.0/24" }, "StringEquals": { "aws:ResourceAccount": "123456789012" } } } ] }

此政策拒絕從 203.0.113.0/24 IP 範圍以外的主控台存取,但帳戶根使用者除外。預先驗證陳述式使用 在身分驗證完成之前signin:PrincipalArn豁免根使用者。身分驗證後陳述式會在 OAuth 權杖交換期間,aws:PrincipalArn使用 在身分驗證後豁免相同的委託人。請參閱 政策範例

OAuth 條件金鑰

AWS Sign-In 提供您可以在 IAM 政策中使用的 OAuth 特定條件金鑰,以控制應用程式取得 OAuth 授權和 OAuth 權杖的方式。這些條件金鑰可讓您限制可連接的 OAuth 用戶端、可信任的重新導向 URIs、允許的 OAuth 授權流程、OAuth 用戶端驗證的方式,以及可管理的 OAuth 權杖。

OAuth 條件金鑰可用於 IAM 身分政策、服務控制政策 (SCPs)、資源控制政策 (RCPs) 和其他支援 AWS Sign-In 動作的 IAM 政策類型。

下列 OAuth 條件金鑰可供使用。

條件鍵 Type 說明 適用的動作
signin:OAuthClientId String 限制授權給核准的 OAuth 用戶端。 signin:AuthorizeOAuth2Access, signin:CreateOAuth2Token, signin:IntrospectOAuth2Token
signin:OAuthRedirectUri String 將 OAuth 授權限制為核准的重新導向 URIs。 signin:AuthorizeOAuth2Access, signin:CreateOAuth2Token, signin:CreateOAuth2PublicClient
signin:OAuthGrantType String 控制允許哪些 OAuth 授予類型。值:authorization_coderefresh_tokenclient_credentials signin:CreateOAuth2Token
signin:OAuthClientAuthentication String 控制允許的 OAuth 用戶端身分驗證方法。 signin:CreateOAuth2Token
signin:OAuthTokenType String 控制對 OAuth 存取和重新整理權杖執行的操作。值:access_tokenrefresh_token signin:RevokeOAuth2Token, signin:IntrospectOAuth2Token

signin:OAuthClientId

使用 根據請求存取的已註冊 OAuth 用戶端signin:OAuthClientId來允許或拒絕 OAuth 授權。

OAuth IDs 以 AWS 登入動態用戶端註冊 (DCR) ARNs表示。

對於非互動式 (用戶端登入資料) 流程,隱含用戶端 ID 為 arn:aws:signin:::client-credentials/sigv4

適用的動作
  • signin:AuthorizeOAuth2Access

  • signin:CreateOAuth2Token

  • signin:IntrospectOAuth2Token

範例 – 僅允許特定已註冊的 OAuth 用戶端:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "signin:AuthorizeOAuth2Access", "signin:CreateOAuth2Token" ], "Resource": "arn:aws:signin:*:*:service-principal/aws-mcp.amazonaws.com", "Condition": { "StringEquals": { "signin:OAuthClientId": "arn:aws:signin:us-east-1::external-client/dcr/081e0aeb-e779-4dfe-9648-bd5bf6e6afa4" } } } ] }

signin:OAuthRedirectUri

使用 signin:OAuthRedirectUri 來限制 OAuth 授權回應的傳遞位置。

這通常用於確保 OAuth 授權回應只會傳回至信任URIs,例如開發期間的 localhost。

對於 signin:CreateOAuth2PublicClient動作,此條件索引鍵僅適用於 VPC 端點 (VPCE) 政策評估。

適用的動作
  • signin:AuthorizeOAuth2Access

  • signin:CreateOAuth2Token

  • signin:CreateOAuth2PublicClient

範例 – 僅允許瀏覽器型授權用於 localhost 重新導向 URIs僅允許用於互動式 OAuth 流程:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "signin:AuthorizeOAuth2Access", "signin:CreateOAuth2Token" ], "Resource": "arn:aws:signin:*:*:service-principal/aws-mcp.amazonaws.com", "Condition": { "StringLike": { "signin:OAuthRedirectUri": "http://localhost:*" }, "StringEquals": { "signin:OAuthGrantType": [ "authorization_code", "refresh_token" ] } } } ] }

Signin:OAuthGrantType

使用 signin:OAuthGrantType 控制應用程式可使用的 OAuth 授予類型。

支援的值包括:

  • authorization_code

  • refresh_token

  • client_credentials

適用的動作
  • signin:CreateOAuth2Token

範例 – 僅允許瀏覽器型 OAuth 授權,同時防止應用程式使用用戶端登入資料授予:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "signin:CreateOAuth2Token", "Resource": "*", "Condition": { "StringEquals": { "signin:OAuthGrantType": [ "authorization_code", "refresh_token" ] } } } ] }

signin:OAuthClientAuthentication

使用 signin:OAuthClientAuthentication 控制 OAuth 用戶端在請求存取字符時可以使用的用戶端身分驗證方法。

目前支援的值:

  • none

適用的動作
  • signin:CreateOAuth2Token

範例 – 拒絕 OAuth 操作的公有用戶端:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "signin:CreateOAuth2Token", "Resource": "*", "Condition": { "StringEquals": { "signin:OAuthClientAuthentication": "none" } } } ] }

signin:OAuthTokenType

使用 signin:OAuthTokenType 控制哪些 OAuth 字符類型可以自我檢查或撤銷。

支援的值包括:

  • access_token

  • refresh_token

適用的動作
  • signin:IntrospectOAuth2Token

  • signin:RevokeOAuth2Token

範例 – 僅允許撤銷重新整理字符:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "signin:RevokeOAuth2Token", "Resource": "*", "Condition": { "StringEquals": { "signin:OAuthTokenType": "refresh_token" } } } ] }

依動作的條件索引鍵可用性

下表顯示每個動作可用的條件索引鍵。

條件鍵 Signin:Authenticate 登入:AuthorizeOAuth2Access Signin:CreateOAuth2Token Signin:RevokeOAuth2Token Signin:IntrospectOAuth2Token Signin:CreateOAuth2PublicClient
aws:SourceIp
aws:SourceVpc
aws:SourceVpce
aws:VpcSourceIp
aws:RequestedRegion
aws:PrincipalArn
aws:PrincipalAccount
signin:PrincipalArn
signin:OAuthClientId
signin:OAuthRedirectUri
signin:OAuthGrantType
signin:OAuthClientAuthentication
signin:OAuthTokenType
注意

signin:CreateAccount 動作僅用於主控台私有存取的 VPC 端點政策,不適用於資源型政策或 RCPs。沒有與之相關聯的服務特定條件索引鍵。請參閱主控台私有存取