API-鏈接的策略存儲 - Amazon Verified Permissions

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

API-鏈接的策略存儲

在 Amazon 驗證許可主控台中建立新的政策存放區時,可以選擇使用API閘道和身分識別來源設定選項。使用此選項,您可以建立API連結的政策存放區,這是透過 Amazon Cognito 使用者集區或OIDC身分供應商 (IdP) 進行驗證的應用程式授權模型,並從 Amazon Gateway 取得資料。API APIs若要開始使用,請參閱建立將API閘道與身分識別提供者搭配使用的原則存放區

重要

您使用 [已驗證權限] 主控台中的 [使用API閘道和身分識別來源] 選項建立的原則存放區不適用於立即部署至生產環境。使用您的初始原則存放區,完成授權模型,並將原則存放區資源匯出至 CloudFormation。使用 AWSCloud Development Kit (CDK) 以程式設計方式將已驗證的權限部署至生產 如需詳細資訊,請參閱轉移到生產環境 AWS CloudFormation

在連結至API和身分識別來源的原則存放區中,當應用程式向API. 原則存放區的身分識別來源提供已驗證權限的權杖驗證。權杖會形成 principal in 授權要求IsAuthorizedWithTokenAPI。已驗證的權限會圍繞使用者的群組成員資格建立原則,如身分識別 (ID) 和存取權杖中的群組宣告所示,cognito:groups例如使用者集區。您可以在 Lambda 授權者中API處理應用程式的權杖,並將其提交給已驗證的許可以進行授權決策。當您API收到 Lambda 授權者的授權決定時,會將請求傳送至您的資料來源或拒絕該請求。

具有已驗證權限的身分識別來源和API閘道授權元件
  • 對使用者進行驗證和分組的 Amazon Cognito 使用者集區或 OIDC IdP。使用者的 Token 會填入群組成員資格,以及原則存放區中「已驗證權限」評估的主體或內容。

  • API閘道器RESTAPI。例如,「已驗證的權限」會定義API路徑和API方法的動作MyAPI::Action::get /photo

  • 一個 Lambda 函數和一個 Lambda 授權器為您的API. Lambda 函數會從您的使用者集區接收不記名權杖,從已驗證的權限要求授權,然後將決定傳回給API閘道。「使用 Cognito 和API閘道設定」工作流程會自動為您建立此 Lambda 授權者。

  • 驗證權限原則存放區。原則存放區身分識別來源是您的使用者集區。原則存放區結構描述會反映您的設定API,而且原則會將使用者群組連結至允許的API動作。

  • 使用 IdP 驗證使用者並將權杖附加至要求的應用程式。API

驗證權限如何授API權請求

當您建立新的原則存放區並選取 [使用 Cognito 和API閘道設定] 選項時,[已驗證的權限] 會建立原則存放區結構描述和原則。結構描述和策略反映了您要授權採取API動作的動作以及使用者集區群組。已驗證的權限也會建立 Lambda 函數和授權者。您必須在中的方法上配置新的API授權者。

顯示具有 Amazon API 閘道、Amazon Cognito 和 Amazon 驗證許可的授權請求流程的圖表。
  1. 您的使用者透過 Amazon Cognito 或其他 OIDC IdP 使用您的應用程式登入。IdP 會以使用者的資訊發出 ID 和存取權杖。

  2. 您的應用程式會儲存JWTs. 如需詳細資訊,請參閱 Amazon Cognito 開發人員指南中的搭配使用者集區使用權杖

  3. 您的使用者要求您的應用程式必須從外部擷取的資料API。

  4. 您的應用程式要求來自API閘道RESTAPI中的資料。它附加一個 ID 或訪問令牌作為請求頭。

  5. 如果您API有授權決定的緩存,它將返回以前的響應。如果停用快取或沒API有目前的快取,APIGateway 會將請求參數傳遞給以權杖為基礎的 Lambda 授權者。

  6. Lambda 函數會將授權請求傳送至已驗證的權限原則存放區IsAuthorizedWithTokenAPI。Lambda 函數傳遞授權決策的元素:

    1. 使用者的權杖做為主體。

    2. 該API方法與API路徑相結合,例如GetPhoto,作為動作。

    3. Application作為資源的術語。

  7. 已驗證的權限會驗證權杖。如需有關如何驗證 Amazon Cognito 權杖的詳細資訊,請參閱 Amazon Co gnito 開發人員指南中的使用 Amazon 驗證許可授權

  8. 「已驗證的權限」會根據原則存放區中的原則評估授權要求,並傳回授權決策。

  9. Lambda 授權者會向API閘道傳DenyAllow或回應。

  10. 會API傳回ACCESS_DENIED應用程式的資料或回應。您的應用程式會處理並顯示API要求的結果。

API連結原則存放區的考量

當您在 [已驗證的權限] 主控台中建立API連結的原則存放區時,您正在為最終的生產部署建立測試。在移至生產環境之前,請為您API和使用者集區建立固定組態。請考慮以下因素:

API閘道快取回應

在API連結的原則存放區中,已驗證的權限會建立具有 120 秒授權快取TTL的 Lambda 授權者。您可以在授權者中調整此值或關閉緩存。在啟用緩存的授權者中,您的授權者每次返回相同的響應,直到過期。TTL這可以通過等於請求階段緩存的持續時間來延長用戶池令牌TTL的有效生命週期。

Amazon Cognito 群組可以重複使用

Amazon 驗證許可會根據使用者 ID 或存取權杖中的cognito:groups宣告來決定使用者集區使用者的群組成員資格。此宣告的值是使用者所屬之使用者集區群組易記名稱的陣列。您無法將使用者集區群組與唯一識別碼建立關聯。

您刪除和重新建立的使用者集區群組,其名稱與相同群組顯示在原則存放區中的相同名稱。當您從使用者集區中刪除群組時,請從原則存放區刪除群組的所有參照。

API-派生的命名空間和模式 point-in-time

「已驗證的權限」API 會擷取您的某個時間點:它只會在您建立原則存放區API時查詢您的資訊。API變更結構描述或名稱時,您必須更新原則存放區和 Lambda 授權者,或建立新的API連結政策存放區。已驗證的權限從您API的.

Lambda 函數沒有VPC配置

已驗證許可為您的API授權者建立的 Lambda 函數未連接到VPC. 默認情況下。APIs網路存取權限制為私有VPCs無法與 Lambda 函數進行通訊,該函數使用已驗證的權限授權存取請求。

已驗證的權限部署授權者資源 CloudFormation

若要建立API連結的原則存放區,您必須將高權限的主體登入「已驗證的權限」 AWS 主控台。此使用者會部署跨多個 AWS 服務建立資源的 AWS CloudFormation 堆疊。此主體必須具有在已驗證許可、 IAM Lambda 和API閘道中新增和修改資源的權限。最佳做法是,請勿與組織中的其他系統管理員共用這些認證。

轉移到生產環境 AWS CloudFormation需已驗證權限建立的資源概觀,請參閱。

新增以屬性為基礎的存取控制 () ABAC

具有 IdP 的典型驗證工作階段會傳回 ID 和存取權杖。您可以在應用程序請求中將這些令牌類型中的任何一種作為承載令牌傳遞給API. 根據您在建立原則存放區時的選擇,「已驗證的權限」會預期這兩種權杖類型的其中一種。這兩種類型都包含有關用戶組成員資格的信息。如需 Amazon Cognito 中權杖類型的詳細資訊,請參閱 Amazon Cognito 開發人員指南中的使用權杖搭配使用者集區

建立原則存放區之後,您可以新增和擴充原則。例如,您可以在將群組新增至使用者集區時,將群組新增至原則。由於您的政策存放區已知道使用者集區以權杖呈現群組的方式,因此您可以針對具有新政策的任何新群組允許執行一組動作。

您也可以根據使用者屬性,將以群組為基礎的原則評估模型擴充為更精確的模型。用戶池令牌包含其他用戶信息,這些信息可以有助於授權決策。

身份證令牌

ID 令牌代表用戶的屬性,並具有最高級別的精細訪問控制。要評估電子郵件地址,電話號碼或自定義屬性(例如部門和經理),請評估 ID 令牌。

存取權杖

訪問令牌代表具有 OAuth 2.0 範圍的用戶權限。若要新增授權層或設定其他資源的要求,請評估存取權杖。例如,您可以驗證使用者是否位於適當的群組中,具有類似的範圍PetStore.read,通常會授權存取API. 用戶池可以向具有資源服務器的令牌添加自定義範圍,並在運行時使用令牌自定義。

請參將身份提供者令牌映射到模式閱在 ID 和訪問令牌中處理聲明的示例策略。