API- 連結的政策存放區 - Amazon Verified Permissions

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

API- 連結的政策存放區

常見的使用案例是使用 Amazon Verified Permissions 來授權使用者存取APIs託管於 Amazon API Gateway 上的 。使用 AWS 主控台中的精靈,您可以為 Amazon Cognito 或任何OIDC身分提供者 (IdP) 中管理的使用者建立角色型存取政策,並部署 AWS Lambda 授權方,呼叫已驗證許可來評估這些政策。

若要完成精靈,請在建立新政策存放區時,選擇使用 API Gateway 和身分提供者設定,然後依照步驟操作。

已建立 API連結的政策存放區,並為授權請求佈建授權模型和資源。政策存放區具有身分來源和 Lambda 授權方,可將API閘道連線至已驗證的許可。建立政策存放區後,您可以根據使用者的群組成員資格來授權API請求。例如,已驗證許可只能將存取權授予作為Directors群組成員的使用者。

隨著應用程式的成長,您可以使用 Cedar 政策語言 ,對使用者屬性和 OAuth 2.0 範圍實作精細的授權。例如,已驗證許可只能將存取權授予網域 中具有email屬性的使用者mycompany.co.uk

設定 的授權模型後API,您剩餘的責任是驗證使用者,並在應用程式中產生API請求,並維護您的政策存放區。

若要查看示範,請參閱Amazon Web Services YouTube 頻道 上的 Amazon Verified Permissions - Quick Start Overview 和示範

重要

您在 Verified Permissions 主控台中使用設定API閘道和身分來源選項建立的政策存放區不適用於立即部署到生產環境。使用初始政策存放區,完成授權模型並將政策存放區資源匯出至 CloudFormation。使用 AWS 雲端開發套件 (CDK),以程式設計方式將已驗證的許可部署到生產環境。如需詳細資訊,請參閱使用 移至生產 AWS CloudFormation

在連結至 API和身分來源的政策存放區中,您的應用程式會在向 提出請求時,在授權標頭中顯示使用者集區權杖API。政策存放區的身分來源提供驗證許可的權杖驗證。權杖會與 一起形成授權請求principal中的 IsAuthorizedWithToken API。Verified Permissions 會建置以使用者群組成員身分相關的政策,如身分 (ID) 和存取權杖中的群組宣告所示,例如cognito:groups使用者集區。您的 會在 Lambda 授權方中API處理您應用程式的權杖,並將其提交給驗證許可以進行授權決策。當您API收到 Lambda 授權方的授權決定時,它會將請求傳遞給您的資料來源或拒絕請求。

使用 Verified Permissions 進行身分來源和API閘道授權的元件
  • 驗證和分組使用者的 Amazon Cognito 使用者集區或 OIDC IdP。使用者的權杖會填入群組成員資格,以及 Verified Permissions 在政策存放區中評估的主體或內容。

  • API Gateway REST API。Verified Permissions 會從API路徑和API方法定義動作,例如 MyAPI::Action::get /photo

  • 適用於您 的 Lambda 函數和 Lambda 授權方API。Lambda 函數會從使用者集區取得承載符字符、請求驗證許可的授權,並將決策傳回給 API Gateway。使用 API Gateway 和身分來源工作流程設定會自動為您建立此 Lambda 授權方。

  • Verified Permissions 政策存放區。政策存放區身分來源是您的 Amazon Cognito 使用者集區或OIDC提供者群組。政策存放區結構描述會反映 的組態API,而政策會將使用者群組連結至允許的API動作。

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

Verified Permissions 如何授權API請求

當您建立新的政策存放區並選取使用API閘道和身分來源設定選項時,驗證許可會建立政策存放區結構描述和政策。結構描述和政策反映API了動作和您要授權採取動作的使用者群組。已驗證的許可也會建立 Lambda 函數和授權方

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

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

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

  4. 您的應用程式會從 API Gateway RESTAPI中的 請求資料。它附加 ID 或存取權杖作為請求標頭。

  5. 如果您的 API具有授權決策的快取,則會傳回先前的回應。如果停用快取或 API 沒有目前的快取,APIGateway 會將請求參數傳遞給以字符為基礎的 Lambda 授權方

  6. Lambda 函數會使用 IsAuthorizedWithToken 將授權請求傳送至驗證許可政策存放區API。Lambda 函數會傳遞授權決策的元素:

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

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

    3. Application 作為 資源的 術語。

  7. 已驗證許可會驗證權杖。如需如何驗證 Amazon Cognito 權杖的詳細資訊,請參閱 Amazon Amazon Cognito授權 Amazon Verified Permissions

  8. Verified Permissions 會根據政策存放區中的政策評估授權請求,並傳回授權決策。

  9. Lambda 授權方會將 AllowDeny回應傳回 API Gateway。

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

API連結政策存放區的考量事項

當您在 Verified Permissions 主控台中建置 API連結的政策存放區時,您正在建立最終生產部署的測試。移至生產之前,請為您的 API和使用者集區建立固定組態。請考量下列因素:

API Gateway 快取回應

在 API連結的政策存放區中,驗證許可會建立授權快取為 120 秒TTL的 Lambda 授權方。您可以調整此值或關閉授權方中的快取。在啟用快取的 授權方中,您的授權方每次都會傳回相同的回應,直到 TTL過期為止。這可以將使用者集區權杖的有效生命週期延長至等於所請求階段快取TTL的持續時間。

Amazon Cognito 群組可以重複使用

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

您刪除並重新建立的使用者集區群組,其名稱與相同群組相同,會呈現至您的政策存放區。當您從使用者集區刪除群組時,請從您的政策存放區刪除群組的所有參考。

API-衍生命名空間和結構描述是 point-in-time

已驗證許可API會在某個時間點擷取您的 :它只會在您建立政策存放區API時查詢您的 。當您API變更的結構描述或名稱時,您必須更新政策存放區和 Lambda 授權方,或建立新的 API連結政策存放區。已驗證的許可會從您 的名稱衍生政策存放區命名空間API。

Lambda 函數沒有VPC組態

Verified Permissions 為API授權方建立的 Lambda 函數會在預設 中啟動VPC。依預設。APIs 限制為私有的網路存取VPCs,無法與授權具有已驗證許可之存取請求的 Lambda 函數通訊。

已驗證的許可會在 中部署授權方資源 CloudFormation

若要建立 API連結的政策存放區,您必須登入高度特權 AWS 主體至 Verified Permissions 主控台。此使用者會部署 AWS CloudFormation 堆疊,以跨數個 建立資源 AWS 服務。此主體必須具有在驗證許可 IAM、Lambda 和 API Gateway 中新增和修改資源的許可。最佳實務是,請勿與組織中的其他管理員共用這些憑證。

如需 Verified Permissions 建立的資源概觀,使用 移至生產 AWS CloudFormation請參閱 。

新增屬性型存取控制 (ABAC)

具有 IdP 的典型身分驗證工作階段會傳回 ID 和存取權杖。您可以在應用程式請求中將這些權杖類型作為承載權杖傳遞給 API。根據您在建立政策存放區時的選擇,驗證許可預期有兩種類型的權杖之一。這兩種類型都包含有關使用者群組成員資格的資訊。如需 Amazon Cognito 中權杖類型的詳細資訊,請參閱 Amazon Cognito 開發人員指南 中的將權杖與使用者集區搭配使用

建立政策存放區後,您可以新增和延伸政策。例如,您可以在將新群組新增至使用者集區時,將新群組新增至政策。由於您的政策存放區已了解使用者集區在權杖中呈現群組的方式,因此您可以允許任何具有新政策的新群組採取一組動作。

您可能也想要根據使用者屬性,將政策評估的群組型模型擴展為更精確的模型。使用者集區權杖包含其他使用者資訊,有助於授權決策。

ID 權杖

ID 權杖代表使用者的屬性,並具有高度精細的存取控制。若要評估電子郵件地址、電話號碼或自訂屬性,例如部門和經理,請評估 ID 權杖。

存取權杖

存取權杖代表具有 2.0 OAuth 範圍的使用者許可。若要新增授權層或設定其他資源的請求,請評估存取權杖。例如,您可以驗證使用者是否位於適當的群組中,攜帶一個像PetStore.read一般授權存取 的範圍API。使用者集區可以使用資源伺服器將自訂範圍新增至權杖,並在執行期使用權杖自訂。

如需在 ID 和存取權杖中處理宣告的政策範例將身分提供者權杖映射至結構描述,請參閱 。