APIにリンクされたポリシーストア - Amazon Verified Permissions

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

APIにリンクされたポリシーストア

一般的なユースケースは、Amazon Verified Permissions を使用して、Amazon API Gateway でAPIsホストされている へのユーザーアクセスを許可することです。 AWS コンソールのウィザードを使用して、Amazon Cognito または任意の OIDC ID プロバイダー (IdP) で管理されているユーザーのロールベースのアクセスポリシーを作成し、Verified Permissions を呼び出してこれらのポリシーを評価するオー AWS Lambda ソライザーをデプロイできます。

ウィザードを完了するには、新しいポリシーストアを作成するときに API Gateway と ID プロバイダーでセットアップを選択し、ステップに従います。

リンクAPIされたポリシーストアが作成され、認証リクエストの認証モデルとリソースがプロビジョニングされます。ポリシーストアには、APIゲートウェイを Verified Permissions に接続する ID ソースと Lambda オーソライザーがあります。ポリシーストアが作成されると、ユーザーのグループメンバーシップに基づいてAPIリクエストを承認できます。例えば、Verified Permissions は、Directorsグループのメンバーであるユーザーにのみアクセス許可を付与できます。

アプリケーションが大きくなると、Cedar ポリシー言語 を使用して、ユーザー属性と OAuth 2.0 スコープを使用してきめ細かな認証を実装できます。例えば、Verified Permissions は、ドメイン に email 属性を持つユーザーにのみアクセス許可を付与できますmycompany.co.uk

の認証モデルを設定した後API、残りの責任は、ユーザーを認証し、アプリケーションでAPIリクエストを生成し、ポリシーストアを維持することです。

デモを確認するには、Amazon Web Services YouTube チャンネル「Amazon Verified Permissions - Quick Start Overview and Demo」を参照してください。

重要

「Set up with API Gateway」および「Verified Permissions」コンソールの ID ソースオプションを使用して作成したポリシーストアは、本番環境への即時デプロイを意図したものではありません。最初のポリシーストアで、承認モデルを確定し、ポリシーストアリソースを にエクスポートします CloudFormation。AWS クラウド開発キット (CDK) を使用して、検証済みアクセス許可をプログラムで本番環境にデプロイします。詳細については、「を使用した本番稼働への移行 AWS CloudFormation」を参照してください。

API および ID ソースにリンクされているポリシーストアでは、アプリケーションは にリクエストを行うときに、承認ヘッダーにユーザープールトークンを提示しますAPI。ポリシーストアの ID ソースは、Verified Permissions のトークン検証を提供します。トークンは、 を使用して認証リクエストprincipalIsAuthorizedWithToken を形成しますAPI。Verified Permissions は、アイデンティティ (ID) やアクセストークンのグループクレーム、例えばユーザープールで提示されているように、cognito:groupsユーザーのグループメンバーシップに関するポリシーを構築します。は Lambda オーソライザーでアプリケーションからトークンAPIを処理し、認証決定のために Verified Permissions に送信します。が Lambda オーソライザーから承認決定APIを受信すると、 はリクエストをデータソースに渡すか、リクエストを拒否します。

Verified Permissions を使用した ID ソースとAPIゲートウェイ認証のコンポーネント
  • ユーザーを認証してグループ化する Amazon Cognito ユーザープールまたは OIDC IdP。ユーザーのトークンは、ポリシーストアで Verified Permissions が評価するグループメンバーシップとプリンシパルまたはコンテキストを入力します。

  • API ゲートウェイ REST API。Verified Permissions は、 などのAPIパスやAPIメソッドからのアクションを定義しますMyAPI::Action::get /photo

  • の Lambda 関数と Lambda オーソライザーAPI。Lambda 関数は、ユーザープールからベアラトークンを取得し、Verified Permissions から承認をリクエストし、APIGateway に決定を返します。Gateway APIと ID ソースでのセットアップワークフローにより、この Lambda オーソライザーが自動的に作成されます。

  • Verified Permissions ポリシーストア。ポリシーストア ID ソースは Amazon Cognito ユーザープールまたはOIDCプロバイダーグループです。ポリシーストアスキーマには の設定が反映されAPI、ポリシーはユーザーグループを許可されたAPIアクションにリンクします。

  • IdP でユーザーを認証し、APIリクエストにトークンを追加するアプリケーション。

Verified Permissions がAPIリクエストを承認する方法

新しいポリシーストアを作成し、APIゲートウェイと ID ソースでのセットアップオプションを選択すると、Verified Permissions はポリシーストアスキーマとポリシーを作成します。スキーマとポリシーには、APIアクションを実行することを許可するアクションとユーザーグループが反映されます。Verified Permissions は、Lambda 関数とオーソライザー も作成します。

Amazon API Gateway、Amazon Cognito 、および Amazon Verified Permissions による認証リクエストの流れを示す図。
  1. ユーザーは、Amazon Cognito または別の OIDC IdP を介してアプリケーションにサインインします。IdP は、ID トークンとアクセストークンにユーザー情報を発行します。

  2. アプリケーションは を保存しますJWTs。詳細については、「Amazon Cognito デベロッパーガイド」の「ユーザープールでのトークンの使用」を参照してください。 Amazon Cognito

  3. ユーザーは、アプリケーションが外部 から取得する必要があるデータをリクエストしますAPI。

  4. アプリケーションは API Gateway RESTAPIの からデータをリクエストします。ID またはアクセストークンをリクエストヘッダーとして追加します。

  5. API に承認決定のキャッシュがある場合、以前のレスポンスが返されます。キャッシュが無効になっているか、 APIに現在のキャッシュがない場合、APIゲートウェイはリクエストパラメータをトークンベースの Lambda オーソライザー に渡します。

  6. Lambda 関数は、 を使用して Verified Permissions ポリシーストアに認証リクエストを送信しますIsAuthorizedWithTokenAPI。Lambda 関数は、承認決定の要素を渡します。

    1. プリンシパルとしてのユーザーのトークン。

    2. API メソッドは、 アクションとして GetPhotoなどのAPIパスと組み合わせられます。

    3. リソースApplicationとしての用語。

  7. Verified Permissions はトークンを検証します。Amazon Cognito トークンの検証方法の詳細については、「Amazon Amazon Cognitoデベロッパーガイド」の「Amazon Verified Permissions による認証」を参照してください。

  8. Verified Permissions は、ポリシーストア内のポリシーに対して認証リクエストを評価し、認証決定を返します。

  9. Lambda オーソライザーはAPI、ゲートウェイに Allowまたは Denyレスポンスを返します。

  10. は、アプリケーションにデータまたはACCESS_DENIEDレスポンスAPIを返します。アプリケーションはAPIリクエストの結果を処理して表示します。

リンクAPIされたポリシーストアに関する考慮事項

Verified Permissions コンソールでAPIリンクされたポリシーストアを構築すると、最終的な本番デプロイのテストが作成されます。本番稼働に移行する前に、 APIと ユーザープールの固定設定を確立します。次の要素を考慮してください。

API ゲートウェイがレスポンスをキャッシュする

リンクAPIされたポリシーストアでは、Verified Permissions は 120 秒TTLの認証キャッシュを持つ Lambda オーソライザーを作成します。この値は調整することも、オーソライザーでキャッシュをオフにすることもできます。キャッシュが有効になっているオーソライザーでは、 TTLの有効期限が切れるまで、オーソライザーは毎回同じレスポンスを返します。これにより、ユーザープールトークンの有効期間を、リクエストされたステージTTLのキャッシュに等しい期間だけ延長できます。

Amazon Cognito グループを再利用できる

Amazon Verified Permissions は、ユーザーの ID またはアクセストークンのcognito:groupsクレームからユーザープールユーザーのグループメンバーシップを決定します。このクレームの値は、ユーザーが属するユーザープールグループのわかりやすい名前の配列です。ユーザープールグループを一意の識別子に関連付けることはできません。

ポリシーストアに同じグループと同じ名前で削除および再作成するユーザープールグループ。ユーザープールからグループを削除するときは、ポリシーストアからグループへのすべての参照を削除します。

API派生名前空間とスキーマは です。 point-in-time

Verified Permissions は、APIある時点で をキャプチャします。ポリシーストアを作成するAPIときにのみ にクエリを実行します。スキーマまたは名前APIが変更された場合は、ポリシーストアと Lambda オーソライザーを更新するか、新しいリンクAPIされたポリシーストアを作成する必要があります。Verified Permissions は、 の名前からポリシーストアの名前空間を取得しますAPI。

Lambda 関数にはVPC設定がありません

Verified Permissions がAPIオーソライザー用に作成する Lambda 関数は、デフォルトの で起動されますVPC。デフォルトでは、APIs プライベートに制限されたネットワークアクセスを持つ VPCs は、Verified Permissions によるアクセスリクエストを許可する Lambda 関数と通信できません。

Verified Permissions がオーソライザーリソースを にデプロイする CloudFormation

リンクAPIされたポリシーストアを作成するには、高特権 AWS プリンシパルを Verified Permissions コンソールにサインインする必要があります。このユーザーは、複数の にリソースを作成する AWS CloudFormation スタックをデプロイします AWS のサービス。このプリンシパルには、Verified Permissions、、Lambda IAM、APIGateway でリソースを追加および変更するアクセス許可が必要です。ベストプラクティスとして、これらの認証情報を組織内の他の管理者と共有しないでください。

Verified Permissions が作成するリソースの概要を使用した本番稼働への移行 AWS CloudFormationについては、「」を参照してください。

属性ベースのアクセスコントロールの追加 (ABAC)

IdP を使用した一般的な認証セッションは、ID トークンとアクセストークンを返します。これらのトークンタイプのいずれかを、アプリケーションリクエストのベアラトークンとして に渡すことができますAPI。ポリシーストアを作成する際の選択肢に応じて、Verified Permissions は 2 種類のトークンのいずれかを想定しています。どちらのタイプにも、ユーザーのグループメンバーシップに関する情報が格納されます。Amazon Cognito のトークンタイプの詳細については、Amazon Cognito デベロッパーガイド」の「ユーザープールでのトークンの使用」を参照してください。

ポリシーストアを作成したら、ポリシーを追加および拡張できます。例えば、ユーザープールに追加する際に、ポリシーに新しいグループを追加できます。ポリシーストアは、ユーザープールがグループをトークンで提示する方法を既に認識しているため、新しいポリシーを持つ新しいグループに対して一連のアクションを許可できます。

また、ポリシー評価のグループベースのモデルを、ユーザープロパティに基づいてより正確なモデルに拡張することもできます。ユーザープールトークンには、承認の決定に役立つ可能性のある追加のユーザー情報が含まれています。

ID トークン

ID トークンはユーザーの属性を表し、高度なきめ細かなアクセスコントロールを備えています。E メールアドレス、電話番号、部門やマネージャーなどのカスタム属性を評価するには、ID トークンを評価します。

アクセストークン

アクセストークンは、2.0 OAuth スコープを持つユーザーのアクセス許可を表します。認証レイヤーを追加したり、追加のリソースのリクエストを設定したりするには、アクセストークンを評価します。例えば、ユーザーが適切なグループに存在し へのアクセスを一般的に許可PetStore.readする のようなスコープを持っていることを検証できますAPI。ユーザープールは、リソースサーバーランタイム でのトークンのカスタマイズを使用して、カスタムスコープをトークンに追加できます。

ID トークンとアクセストークンでクレームを処理するポリシーの例ID プロバイダートークンをスキーマにマッピングするについては、「」を参照してください。