Amazon Verified Permissions での認証の実装 - Amazon Verified Permissions

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

Amazon Verified Permissions での認証の実装

ポリシーストア、ポリシー、テンプレート、スキーマ、承認モデルを構築したら、Amazon Verified Permissions を使用してリクエストの承認を開始する準備が整います。Verified Permissions 認証を実装するには、 のポリシーの設定 AWS をアプリケーションの統合と組み合わせる必要があります。Verified Permissions をアプリケーションと統合するには、 AWS SDK を追加し、Verified Permissions API を呼び出し、ポリシーストアに対する承認決定を生成するメソッドを実装します。

Verified Permissions による認可は、アプリケーションの UX アクセス許可API アクセス許可に役立ちます。

UX アクセス許可

アプリケーション UX へのユーザーアクセスを制御します。ユーザーがアクセスする必要がある正確なフォーム、ボタン、グラフィック、その他のリソースのみを表示することを許可できます。例えば、ユーザーがサインインするときに、「資金の移管」ボタンがアカウントに表示されるかどうかを判断できます。ユーザーが実行できるアクションを制御することもできます。例えば、同じバンキングアプリで、ユーザーがトランザクションのカテゴリを変更できるかどうかを判断することができます。

API アクセス許可

データへのユーザーアクセスを制御します。多くの場合、アプリケーションは分散システムの一部であり、外部 APIsから情報を取り込みます。Verified Permissions が「送金資金」ボタンの表示を許可したバンキングアプリケーションの例では、ユーザーが送金を開始するときに、より複雑な承認決定を行う必要があります。Verified Permissions は、適格な転送先アカウントを一覧表示する API リクエストを承認し、次に転送を他のアカウントにプッシュするリクエストを承認できます。

このコンテンツを説明する例は、サンプルポリシーストア から取得されます。これを行うには、テスト環境に DigitalPetStore サンプルポリシーストアを作成します。

バッチ認証を使用して UX アクセス許可を実装するエンドツーエンドのサンプルアプリケーションについては、 AWS セキュリティブログの「Use Amazon Verified Permissions for fine-grained authorization at scale」を参照してください。

認証用の API オペレーション

Verified Permissions API には、次の認証オペレーションがあります。

IsAuthorized

IsAuthorized API オペレーションは、Verified Permissions を使用した認証リクエストへのエントリポイントです。プリンシパル、アクション、リソース、コンテキスト、エンティティの各要素を送信する必要があります。Verified Permissions は、リクエスト内のエンティティをポリシーストアスキーマと照合します。Verified Permissions は、リクエスト内のエンティティに適用されるリクエストされたポリシーストア内のすべてのポリシーに対してリクエストを評価します。

IsAuthorizedWithToken

IsAuthorizedWithToken オペレーションは、Amazon Cognito JSON ウェブトークン (JWTs) のユーザーデータから認証リクエストを生成します。Verified Permissions は、ポリシーストアの ID ソースとして Amazon Cognito と直接連携します。Verified Permissions は、ユーザーの ID トークンまたはアクセストークンのクレームからリクエストのすべての属性をプリンシパルに入力します。Amazon Cognito ユーザープールのユーザー属性またはグループメンバーシップからアクションとリソースを承認できます。

IsAuthorizedWithToken リクエストにグループまたはユーザープリンシパルタイプに関する情報を含めることはできません。すべてのプリンシパルデータを、指定した JWT に入力する必要があります。

BatchIs承認済み

BatchIsAuthorized オペレーションは、1 つの API リクエストで 1 つのプリンシパルまたはリソースに対して複数の承認決定を処理します。このオペレーションは、クォータの使用を最小限に抑え、最大 30 個の複雑なネストされたアクションごとに承認決定を返す 1 つのバッチオペレーションにリクエストをグループ化します。1 つのリソースのバッチ認証を使用すると、ユーザーがリソースに対して実行できるアクションをフィルタリングできます。1 つのプリンシパルのバッチ認証を使用すると、ユーザーがアクションを実行できるリソースをフィルタリングできます。

BatchIsAuthorizedWithトークン

BatchIsAuthorizedWithToken オペレーションは、1 つの API リクエストで 1 つのプリンシパルに対して複数の承認決定を処理します。プリンシパルは、ポリシーストア ID ソースによって ID またはアクセストークンで提供されます。このオペレーションは、クォータの使用を最小限に抑え、アクションとリソースに対する最大 30 個のリクエストごとに承認決定を返す 1 つのバッチオペレーションにリクエストをグループ化します。ポリシーでは、Amazon Cognito ユーザープールの属性またはグループメンバーシップからのアクセスを許可できます。

と同様にIsAuthorizedWithToken、グループまたはユーザープリンシパルタイプに関する情報をBatchIsAuthorizedWithTokenリクエストに含めることはできません。すべてのプリンシパルデータを、指定した JWT に入力する必要があります。

認証モデルのテスト

アプリケーションをデプロイする際の Verified Permissions 認証決定の影響を理解するために、ポリシーを開発する際に、 テストベンチおよび Verified Permissions への HTTPS REST API リクエストを使用して評価できます。テストベンチは、ポリシーストア内の認証リクエストとレスポンスを評価する AWS Management Console ための のツールです。

Verified Permissions REST API は、概念的な理解からアプリケーション設計に移行する際の開発の次のステップです。Verified Permissions API はIsAuthorized、リージョンサービスエンドポイント への署名付き API リクエストとして、IsAuthorizedWithToken、、および BatchIsAuthorized による認証リクエストを受け入れます。 AWS認証モデルをテストするには、任意の API クライアントでリクエストを生成し、ポリシーが想定どおりに承認決定を返していることを確認できます。

例えば、次の手順IsAuthorizedを使用して、サンプルポリシーストアでテストできます。

Test bench
  1. Verified Permissions コンソール https://console.aws.amazon.com/verifiedpermissions/ を開きます。ストア という名前のサンプルポリシーストアからポリシーDigitalPetストアを作成します。

  2. 新しいポリシーストアでテストベンチを選択します。

  3. Verified Permissions API リファレンスIsAuthorizedの からテストベンチリクエストを入力します。以下の詳細では、例 4 の条件を、DigitalPetストアサンプルを参照するようにレプリケートします。

    1. Alice をプリンシパルとして設定します。アクションを実行するプリンシパル でDigitalPetStore::Userを選択して を入力しますAlice

    2. Alice のロールを顧客として設定します。親 の追加 を選択し、 を選択してDigitalPetStore::Role、「顧客」と入力します。

    3. リソースを順序「1234」に設定します。プリンシパルが で動作しているリソース でDigitalPetStore::Orderを選択して を入力します1234

    4. DigitalPetStore::Order リソースには owner 属性が必要です。Alice を注文の所有者として設定します。選択DigitalPetStore::Userして入力する Alice

    5. Alice は注文の表示をリクエストしました。プリンシパルが を実行しているアクション で、 を選択しますDigitalPetStore::Action::"GetOrder"

  4. 認証リクエストの実行 を選択します。変更されていないポリシーストアでは、このリクエストによってALLOW決定が行われます。決定を返した「満たされたポリシー」を書き留めます。

  5. 左側のナビゲーションバーから [ポリシー] を選択します。Customer Role - Get Order という説明が付いた静的ポリシーを確認します

  6. プリンシパルがカスタマーロールに属し、リソースの所有者であったため、Verified Permissions がリクエストを許可したことを確認します。

REST API
  1. Verified Permissions コンソール https://console.aws.amazon.com/verifiedpermissions/ を開きます。ストア という名前のサンプルポリシーストアからポリシーDigitalPetストアを作成します。

  2. 新しいポリシーストアのポリシーストア ID を書き留めます。

  3. Verified Permissions API リファレンスIsAuthorizedの から、DigitalPetストアサンプルを参照する例 4 のリクエスト本文をコピーします。

  4. API クライアントを開き、ポリシーストアのリージョンサービスエンドポイントへのリクエストを作成します。の例に示すように、ヘッダーを入力します。

  5. サンプルリクエスト本文に貼り付け、 の値を前にメモpolicyStoreIdしたポリシーストア ID に変更します。

  6. リクエストを送信し、結果を確認します。デフォルトのDigitalPetストアポリシーストアでは、このリクエストはALLOW決定を返します。

テスト環境でポリシー、スキーマ、およびリクエストを変更して、結果を変更し、より複雑な意思決定を行うことができます。

  1. Verified Permissions から決定を変更する方法でリクエストを変更します。例えば、Alice のロールを に変更Employeeするか、順序 1234 の owner 属性を に変更しますBob

  2. 承認の決定に影響する方法でポリシーを変更します。例えば、 が の所有者であるUser必要があるという条件を削除し、 が注文を表示できるようにリクエストResourceを変更Bobするために、顧客ロール - 注文を取得するという説明でポリシーを変更します。

  3. ポリシーがより複雑な決定を行うことができるようにスキーマを変更します。Alice が新しい要件を満たすことができるようにリクエストエンティティを更新します。例えば、スキーマを編集して、 UserActiveUsersまたは のメンバーになるようにしますInactiveUsers。アクティブなユーザーのみが自分の注文を表示できるようにポリシーを更新します。Alice がアクティブまたは非アクティブなユーザーになるようにリクエストエンティティを更新します。

アプリケーションおよび AWS SDKsとの統合

アプリケーションに Amazon Verified Permissions を実装するには、アプリケーションに適用するポリシーとスキーマを定義する必要があります。認証モデルが整い、テストされたら、次のステップは、強制の時点から API リクエストの生成を開始することです。これを行うには、ユーザーデータを収集して認証リクエストに入力するアプリケーションロジックを設定する必要があります。

アプリが Verified Permissions でリクエストを承認する方法
  1. 現在のユーザーに関する情報を収集します。通常、JWT やウェブセッション Cookie など、ユーザーの詳細は認証されたセッションの詳細で提供されます。このユーザーデータは、ポリシーストアにリンクされた Amazon Cognito ID ソース、または別の OpenID Connect (OIDC) プロバイダー から発信される場合があります。

  2. ユーザーがアクセスするリソースに関する情報を収集します。通常、アプリケーションは、ユーザーが新しいアセットをロードするためにアプリケーションを必要とする選択を行うと、リソースに関する情報を受け取ります。

  3. ユーザーが実行するアクションを決定します。

  4. ユーザーが試行したオペレーションのプリンシパル、アクション、リソース、エンティティを使用して、Verified Permissions に認証リクエストを生成します。Verified Permissions は、ポリシーストア内のポリシーに対してリクエストを評価し、認証決定を返します。

  5. アプリケーションは Verified Permissions から許可または拒否のレスポンスを読み取り、ユーザーのリクエストに決定を適用します。

Verified Permissions API オペレーションは AWS SDKs。Verified Permissions をアプリケーションに含めるには、選択した言語の AWS SDK をアプリケーションパッケージに統合します。

詳細と AWS SDKs「 Tools for Amazon Web Services」を参照してください。

以下は、さまざまな AWS SDKs。

次の AWS SDK for JavaScript の例は、Amazon Verified Permissions と Amazon Cognito によるきめ細かな認証の簡素化からIsAuthorized生成されています。 Amazon Cognito

const authResult = await avp.isAuthorized({ principal: 'User::"alice"', action: 'Action::"view"', resource: 'Photo::"VacationPhoto94.jpg"', // whenever our policy references attributes of the entity, // isAuthorized needs an entity argument that provides // those attributes entities: { entityList: [ { "identifier": { "entityType": "User", "entityId": "alice" }, "attributes": { "location": { "String": "USA" } } } ] } });