本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS 登入條件金鑰參考
此頁面列出您可以在 AWS 登入資源型政策和資源控制政策 (RCPs) 中使用的條件金鑰,並顯示每個金鑰適用的評估階段和動作。只有 signin:PrincipalArn 專屬 AWS 於 Sign-In;其他則是 AWS 全域條件金鑰。如需全域金鑰定義,請參閱AWS 全域條件內容金鑰。
如需服務授權參考中動作和條件索引鍵的完整清單,請參閱 AWS Sign-In 的動作、資源和條件索引鍵。
網路型條件金鑰
這些條件索引鍵會檢查請求的來源。 AWS 登入會針對資源型政策和 RCPs 中的所有 AWS 登入動作 (signin:AuthorizeOAuth2Access、 signin:Authenticate和 signin: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:SourceVpc或 aws:SourceVpce條件金鑰。 |
aws:RequestedRegion |
StringEquals,
StringNotEquals |
目標 AWS 區域碼 | 建議在使用 時aws:SourceVpc防止跨區域 VPC ID 衝突。您可以指定多個區域。 |
重要
單一請求包含 aws:SourceIp(公有網路) 或 aws:SourceVpc(VPC 端點),而非兩者。撰寫涵蓋兩個路徑的拒絕政策時,請使用IfExists運算子 (例如 NotIpAddressIfExists) 或建立個別的陳述式。
身分型條件索引鍵
這些條件索引鍵會檢查提出請求的人員。它們僅適用於驗證後動作 (signin:AuthorizeOAuth2Access 和 signin: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 運算子 (
ArnEquals、ArnLike、ArnNotEquals、ArnNotLike) 和字串運算子 (StringEquals、StringLike)。 - 可用性
-
AWS 登入會在驗證前階段 (
signin:Authenticate動作) 的請求內容中包含此金鑰。它不適用於驗證後動作 (signin:AuthorizeOAuth2Access和signin: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_code、refresh_token、client_credentials。 |
signin:CreateOAuth2Token |
signin:OAuthClientAuthentication |
String | 控制允許的 OAuth 用戶端身分驗證方法。 | signin:CreateOAuth2Token |
signin:OAuthTokenType |
String | 控制對 OAuth 存取和重新整理權杖執行的操作。值:access_token、refresh_token。 |
signin:RevokeOAuth2Token,
signin:IntrospectOAuth2Token |
signin:OAuthClientId
使用 根據請求存取的已註冊 OAuth 用戶端signin:OAuthClientId來允許或拒絕 OAuth 授權。
OAuth IDs 以 AWS 登入動態用戶端註冊 (DCR) ARNs表示。
對於非互動式 (用戶端登入資料) 流程,隱含用戶端 ID 為 arn:aws:signin:::client-credentials/sigv4。
- 適用的動作
-
signin:AuthorizeOAuth2Accesssignin:CreateOAuth2Tokensignin: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:AuthorizeOAuth2Accesssignin:CreateOAuth2Tokensignin: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_coderefresh_tokenclient_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_tokenrefresh_token
- 適用的動作
-
signin:IntrospectOAuth2Tokensignin: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。沒有與之相關聯的服務特定條件索引鍵。請參閱主控台私有存取。