Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

コンテキストの追加

フォーカスモード
コンテキストの追加 - Amazon Verified Permissions

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

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

コンテキストは、ポリシーの決定に関連する情報ですが、プリンシパル、アクション、またはリソースのアイデンティティの一部ではありません。アクセストークンクレームはコンテキストです。一連の送信元 IP アドレスからのみ、またはユーザーが MFA でサインインした場合にのみ、アクションを許可できます。アプリケーションはこのコンテキストセッションデータにアクセスできるため、承認リクエストに入力する必要があります。Verified Permissions 認可リクエストのコンテキストデータは、 contextMap要素で JSON 形式である必要があります。

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

次のコンテキストオブジェクトは、サンプルの DigitalPetStore ポリシーストアに基づいて、アプリケーションの各 Cedar データ型のいずれかを宣言します。

"context": { "contextMap": { "MfaAuthorized": { "boolean": true }, "AccountCodes": { "set": [ { "long": 111122223333 }, { "long": 444455556666 }, { "long": 123456789012 } ] }, "UserAgent": { "string": "My UserAgent 1.12" }, "RequestedOrderCount": { "long": 4 }, "NetworkInfo": { "record": { "IPAddress": { "string": "192.0.2.178" }, "Country": { "string": "United States of America" }, "SSL": { "boolean": true } } }, "approvedBy": { "entityIdentifier": { "entityId": "Bob", "entityType": "DigitalPetStore::User" } } } }
認可コンテキストのデータ型
ブール値

バイナリtrueまたはfalse値。この例では、 trueのブール値 は、顧客が注文の表示をリクエストする前に多要素認証を実行したMfaAuthenticatedことを示します。

設定

コンテキスト要素のコレクション。セットメンバーは、この例のようにすべて同じタイプにすることも、ネストされたセットを含む異なるタイプにすることもできます。この例では、顧客は 3 つの異なるアカウントに関連付けられています。

String

文字で囲まれた文字、数字、または記号のシーケンス"。この例では、UserAgent文字列 は、顧客が注文の表示をリクエストするために使用したブラウザを表します。

Long

整数。この例では、 は、顧客が過去の注文のうち 4 つを表示するように求めた結果、このリクエストがバッチの一部であるRequestedOrderCountことを示します。

レコード

属性のコレクション。これらの属性は、リクエストコンテキストで宣言する必要があります。スキーマを含むポリシーストアには、このエンティティと、スキーマ内のエンティティの属性を含める必要があります。この例では、NetworkInfoレコードには、ユーザーの発信元 IP、クライアントによって決定されるその IP の位置情報、および転送中の暗号化に関する情報が含まれています。

EntityIdentifier

リクエストの entities要素で宣言されたエンティティと属性への参照。この例では、ユーザーの注文が従業員 によって承認されましたBob

このサンプルコンテキストをサンプル DigitalPetStore アプリケーションでテストするには、リクエスト entities、ポリシーストアスキーマ、静的ポリシーを、顧客ロール - 注文の取得の説明で更新する必要があります。

認可コンテキストを受け入れるように DigitalPetStore を変更する

当初、 DigitalPetStore はそれほど複雑なポリシーストアではありません。提示したコンテキストをサポートするために事前設定されたポリシーやコンテキスト属性は含まれません。このコンテキスト情報を使用して認可リクエストの例を評価するには、ポリシーストアと認可リクエストに次の変更を加えます。アクセストークン情報をコンテキストとするコンテキストの例については、「」を参照してくださいアクセストークンをマッピングする

Schema

新しいコンテキスト属性をサポートするために、ポリシーストアスキーマに次の更新を適用します。GetOrderactions次のように更新します。

"GetOrder": { "memberOf": [], "appliesTo": { "resourceTypes": [ "Order" ], "context": { "type": "Record", "attributes": { "UserAgent": { "required": true, "type": "String" }, "approvedBy": { "name": "User", "required": true, "type": "Entity" }, "AccountCodes": { "type": "Set", "required": true, "element": { "type": "Long" } }, "RequestedOrderCount": { "type": "Long", "required": true }, "MfaAuthorized": { "type": "Boolean", "required": true } } }, "principalTypes": [ "User" ] } }

リクエストコンテキストNetworkInfoで という名前recordのデータ型を参照するには、次のようにスキーマに commonType コンストラクトを作成します。commonType コンストラクトは、異なるエンティティに適用できる属性の共有セットです。

注記

Verified Permissions ビジュアルスキーマエディタは現在commonTypeコンストラクトをサポートしていません。スキーマに追加すると、Visual モードでスキーマを表示できなくなります。

"commonTypes": { "NetworkInfo": { "attributes": { "IPAddress": { "type": "String", "required": true }, "SSL": { "required": true, "type": "Boolean" }, "Country": { "required": true, "type": "String" } }, "type": "Record" } }
Policy

次のポリシーは、指定された各コンテキスト要素が満たす必要がある条件を設定します。既存の静的ポリシーに基づいて、顧客ロール - 注文の取得という説明が付けられます。このポリシーでは、最初は、リクエストを行うプリンシパルがリソースの所有者である必要があるだけです。

permit ( principal in DigitalPetStore::Role::"Customer", action in [DigitalPetStore::Action::"GetOrder"], resource ) when { principal == resource.owner && context.MfaAuthorized == true && context.UserAgent like "*My UserAgent*" && context.RequestedOrderCount <= 4 && context.AccountCodes.contains(111122223333) && context.NetworkInfo.Country like "*United States*" && context.NetworkInfo.SSL == true && context.NetworkInfo.IPAddress like "192.0.2.*" && context.approvedBy in DigitalPetStore::Role::"Employee" };

これで、注文を取得するリクエストが、リクエストに追加した追加のコンテキスト条件を満たしている必要がありました。

  1. ユーザーは MFA でサインインしている必要があります。

  2. ユーザーのウェブブラウザには文字列 が含まれているUser-Agent必要がありますMy UserAgent

  3. ユーザーは、4 件以下の注文を表示するようにリクエストしている必要があります。

  4. ユーザーのアカウントコードの 1 つは である必要があります111122223333

  5. ユーザーの IP アドレスは米国から送信され、暗号化されたセッションにあり、IP アドレスは で始まる必要があります192.0.2.

  6. 従業員は注文を承認している必要があります。認可リクエストの entities要素で、 のロールBobを持つユーザーを宣言しますEmployee

Request body

適切なスキーマとポリシーを使用してポリシーストアを設定したら、この認可リクエストを Verified Permissions API オペレーション IsAuthorized に提示できます。entities セグメントにはBob、 という定義、つまり のロールを持つユーザーが含まれていることに注意してくださいEmployee

{ "principal": { "entityType": "DigitalPetStore::User", "entityId": "Alice" }, "action": { "actionType": "DigitalPetStore::Action", "actionId": "GetOrder" }, "resource": { "entityType": "DigitalPetStore::Order", "entityId": "1234" }, "context": { "contextMap": { "MfaAuthorized": { "boolean": true }, "UserAgent": { "string": "My UserAgent 1.12" }, "RequestedOrderCount":{ "long": 4 }, "AccountCodes": { "set": [ {"long": 111122223333}, {"long": 444455556666}, {"long": 123456789012} ] }, "NetworkInfo": { "record": { "IPAddress": {"string": "192.0.2.178"}, "Country": {"string": "United States of America"}, "SSL": {"boolean": true} } }, "approvedBy": { "entityIdentifier": { "entityId": "Bob", "entityType": "DigitalPetStore::User" } } } }, "entities": { "entityList": [ { "identifier": { "entityType": "DigitalPetStore::User", "entityId": "Alice" }, "attributes": { "memberId": { "string": "801b87f2-1a5c-40b3-b580-eacad506d4e6" } }, "parents": [ { "entityType": "DigitalPetStore::Role", "entityId": "Customer" } ] }, { "identifier": { "entityType": "DigitalPetStore::User", "entityId": "Bob" }, "attributes": { "memberId": { "string": "49d9b81e-735d-429c-989d-93bec0bcfd8b" } }, "parents": [ { "entityType": "DigitalPetStore::Role", "entityId": "Employee" } ] }, { "identifier": { "entityType": "DigitalPetStore::Order", "entityId": "1234" }, "attributes": { "owner": { "entityIdentifier": { "entityType": "DigitalPetStore::User", "entityId": "Alice" } } }, "parents": [] } ] }, "policyStoreId": "PSEXAMPLEabcdefg111111" }

新しいコンテキスト属性をサポートするために、ポリシーストアスキーマに次の更新を適用します。GetOrderactions次のように更新します。

"GetOrder": { "memberOf": [], "appliesTo": { "resourceTypes": [ "Order" ], "context": { "type": "Record", "attributes": { "UserAgent": { "required": true, "type": "String" }, "approvedBy": { "name": "User", "required": true, "type": "Entity" }, "AccountCodes": { "type": "Set", "required": true, "element": { "type": "Long" } }, "RequestedOrderCount": { "type": "Long", "required": true }, "MfaAuthorized": { "type": "Boolean", "required": true } } }, "principalTypes": [ "User" ] } }

リクエストコンテキストNetworkInfoで という名前recordのデータ型を参照するには、次のようにスキーマに commonType コンストラクトを作成します。commonType コンストラクトは、異なるエンティティに適用できる属性の共有セットです。

注記

Verified Permissions ビジュアルスキーマエディタは現在commonTypeコンストラクトをサポートしていません。スキーマに追加すると、Visual モードでスキーマを表示できなくなります。

"commonTypes": { "NetworkInfo": { "attributes": { "IPAddress": { "type": "String", "required": true }, "SSL": { "required": true, "type": "Boolean" }, "Country": { "required": true, "type": "String" } }, "type": "Record" } }

このページの内容

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.