建置您的整合 - AWS Identity and Access Management

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

建置您的整合

了解請求生命週期

在建置整合之前,請務必了解委派請求從建立到完成的進度。

請求狀態

委派請求會進行下列狀態:

State Description
未指派 已建立請求,但尚未與客戶帳戶和 IAM 主體建立關聯。可能已建立請求,但未指定目標帳戶,或使用目標帳戶 ID,但尚未由帳戶擁有者宣告。
已指派 與客戶帳戶相關聯並等待審核的請求
待核准 客戶已將請求轉送給管理員進行核准
已接受 請求已由客戶核准,但交換字符尚未發佈
完成 發佈給產品提供者的 Exchange 權杖。委派期間 (交換字符有效性) 會在請求達到完成狀態時開始
已拒絕 客戶拒絕的請求
已過期 請求因閒置或逾時而過期

狀態轉換

正常流程 (核准路徑)

  • 未指派 → 已指派:客戶將請求與其帳戶建立關聯

  • 已指派 → 已接受或已指派 → 待核准:客戶直接核准請求,或轉送給管理員以供檢閱

  • 待核准 → 已接受:管理員核准請求

  • 已接受 → 已完成:客戶發行交換字符

拒絕路徑

  • 已指派 → 已拒絕:客戶拒絕請求

  • 待核准 → 已拒絕:管理員拒絕請求

  • 已接受 → 已拒絕:客戶在釋出權杖之前撤銷核准

過期路徑

如果在指定的時間範圍內未採取任何動作,請求會自動過期:

  • 未指派 → 已過期 (1 天)

  • 指派 → 已過期 (7 天)

  • 待核准 → 已過期 (7 天)

  • 已接受 → 已過期 (7 天)

  • 拒絕 → 已過期 (7 天)

  • 完成 → 已過期 (7 天)

終端機狀態

下列狀態為終端機 (沒有進一步轉換):

  • 完成:已傳送 Exchange Token

  • 拒絕:請求遭拒

  • 已過期:請求逾時或委派期間已結束

過期的請求最終會在保留期間之後從系統中刪除。

管理應用程式中的委派請求狀態

身為合作夥伴,您必須追蹤系統中的委派請求狀態,並將其呈現給客戶。當您收到狀態變更的 SNS 通知時,請將這些更新存放在後端,並在面向客戶的 UI 中反映這些更新。請特別注意待核准狀態 - 當客戶轉送請求給管理員以供檢閱時, 會 AWS 傳送待核准通知給您。請求可以保持此狀態長達 7 天,同時等待管理員動作。在此期間,向客戶顯示他們的請求正在等待您應用程式中的管理員核准。考慮提供深入的 AWS 主控台連結,客戶可以在其中檢查請求狀態或追蹤管理員。正確處理後端中的狀態機器,並在每個階段向客戶提供正確的狀態資訊,對於良好的整合體驗至關重要。

設定 通知

IAM 使用 Amazon Simple Notification Service (SNS) 將委派請求狀態變更傳達給您。建立委派請求時,您必須從已註冊的 AWS 帳戶提供 SNS 主題 ARN。IAM 會將重要事件的訊息發佈至此主題,包括客戶核准或拒絕請求的時間,以及交換字符何時準備就緒。

注意

SNS 主題不能位於選擇加入 AWS 區域。您的 SNS 主題必須位於預設啟用 AWS 的區域。如需選擇加入區域的清單,請參閱 AWS 帳戶管理指南中的管理 AWS 區域。

SNS 主題組態

若要接收委派請求通知,您必須設定 SNS 主題,以授予 IAM 發佈訊息的許可。將下列政策陳述式新增至 SNS 主題政策:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowIAMServiceToPublish", "Effect": "Allow", "Principal": { "Service": "iam.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:REGION:ACCOUNT-ID:TOPIC-NAME" } ] }
重要

SNS 主題必須位於其中一個已註冊 AWS 帳戶中。IAM 不接受來自其他帳戶的 SNS 主題。如果主題政策未正確設定,您將不會收到狀態變更通知或交換字符。

通知類型

IAM 傳送兩種類型的通知:

StateChange 通知

當委派請求轉換為新狀態 (已指派、待核准、已接受、已完成、已拒絕、已過期) 時傳送。

ExchangeToken 通知

當客戶釋出委派字符 (狀態完成) 時傳送。此通知包含您取得憑證所需的交換字符。

通知狀態

您將會收到下列委派請求狀態的通知:

State 通知類型 Description
已指派 狀態變更 請求已與客戶帳戶相關聯
等待核准 狀態變更 客戶已將請求轉送給管理員進行核准
接受 狀態變更 客戶已核准請求,但尚未釋出字符
完成 狀態變更 客戶已釋出交換字符
完成 ExchangeToken 此通知包含 Exchange Token
REJECTED 狀態變更 客戶已拒絕請求
已過期 狀態變更 請求在完成之前已過期

通知訊息格式

IAM 會發佈標準 SNS 通知。委派請求資訊包含在訊息欄位中,做為 JSON 字串。

常見欄位 (所有通知)

欄位 Type 說明
Type String "StateChange" 或 "ExchangeToken"
RequestId String IAM 委派請求 ID
RequestorWorkflowId String 您在建立請求時提供的工作流程 ID
State String 請求的目前狀態
OwnerAccountId String 客戶的 AWS 帳戶 ID
UpdatedAt String 狀態變更時的時間戳記 (ISO 8601 格式)

其他欄位 (僅限 ExchangeToken 通知)

欄位 Type 說明
ExchangeToken String 使用 AWS STS GetDelegatedAccessToken API 交換登入資料的字符
ExpiresAt String 委派存取過期時 (ISO 8601 格式)

範例通知

StateChange 通知

{ "Type": "Notification", "MessageId": "61ee8ad4-6eec-56b5-8f3d-eba57556aa13", "TopicArn": "arn:aws:sns:us-east-1:123456789012:partner-notifications", "Message": "{\"RequestorWorkflowId\":\"workflow-12345\",\"Type\":\"StateChange\",\"RequestId\":\"dr-abc123\",\"State\":\"ACCEPTED\",\"OwnerAccountId\":\"111122223333\",\"UpdatedAt\":\"2025-01-15T10:30:00.123Z\"}", "Timestamp": "2025-01-15T10:30:00.456Z", "SignatureVersion": "1", "Signature": "...", "SigningCertURL": "...", "UnsubscribeURL": "..." }

ExchangeToken 通知

{ "Type": "Notification", "MessageId": "e44e5435-c72c-5333-aba3-354406782f5b", "TopicArn": "arn:aws:sns:us-east-1:123456789012:partner-notifications", "Message": "{\"RequestId\":\"dr-abc123\",\"RequestorWorkflowId\":\"workflow-12345\",\"State\":\"FINALIZED\",\"OwnerAccountId\":\"111122223333\",\"ExchangeToken\":\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\"ExpiresAt\":\"2025-01-15T18:30:00.123Z\",\"UpdatedAt\":\"2025-01-15T10:30:00.456Z\",\"Type\":\"ExchangeToken\"}", "Timestamp": "2025-01-15T10:30:00.789Z", "SignatureVersion": "1", "Signature": "...", "SigningCertURL": "...", "UnsubscribeURL": "..." }

交換字符

當客戶接受並完成委派請求時,IAM 會發出交換字符或權杖的交易。產品提供者使用此交換或權杖交易來呼叫 AWS AWS STS GetDelegatedAccessToken API,以取得具有客戶核准許可的臨時 AWS 登入資料。交換字符本身不會授予 AWS 資源的存取權;必須透過 AWS STS 交換實際登入資料。

交換字符只能由建立委派請求的產品提供者帳戶兌換。請求帳戶內嵌在字符中,確保只有授權的產品提供者可以取得登入資料來存取客戶帳戶。

存取持續時間

委派期間會在客戶釋出交換字符時開始,而不是產品提供者兌換權杖時。一旦客戶釋出字符:

  • 產品提供者透過 SNS 通知接收字符

  • 他們可以立即將其交換為登入資料

  • 登入資料過期時間:發行時間 + 核准的持續時間

  • 產品提供者可以在過期前多次交換字符,以在需要時取得新的登入資料

多個兌換

產品提供者可以在有效期間多次交換字符,以取得新的登入資料。不過,從相同交換字符取得的所有登入資料都會同時過期,取決於您何時釋出字符。

範例:如果您核准 2 小時委派請求,並在上午 10:00 釋出權杖:

權杖發行時間 字符交換時間 登入資料過期 可用時間
上午 10:00 上午 10:00 12:00 PM 2 小時
上午 10:00 上午 10:20 12:00 PM 1 小時 40 分鐘
上午 10:00 上午 11:40 12:00 PM 20 分鐘
上午 10:00 中午 12:10 失敗 (權杖過期) 0 分鐘

如表格所示,稍後在有效期間交換字符會導致產品供應商的可用時間變少。