

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

# OPA での PDP の外部データの取得
<a name="external-data-opa"></a>

OPA の場合、認可決定に必要なすべてのデータを入力として、またはクエリのコンポーネントとして渡される JSON ウェブトークン (JWT) の一部として提供できる場合、追加の設定は必要ありません。(クエリ入力の一部として JWTs と SaaS コンテキストデータを OPA に渡すのは比較的簡単です）。OPA は、*過負荷入力アプローチと呼ばれる で任意の JSON 入力*を受け入れることができます。PDP が入力または JWT として含めることができるデータを超えるデータを必要とする場合、OPA はこのデータを取得するためのいくつかのオプションを提供します。これには、バンドル、データのプッシュ (レプリケーション）、動的データ取得が含まれます。

## OPA バンドル
<a name="opa-bundling"></a>

OPA バンドル機能は、外部データ取得の次のプロセスをサポートしています。

1. ポリシー適用ポイント  (PEP) は認可決定をリクエストします。

1. OPA は、外部データを含む新しいポリシーバンドルをダウンロードします。

1. バンドルサービスは、データソース (複数可) からデータをレプリケートします。

バンドル機能を使用すると、OPA は一元化されたバンドルサービスからポリシーとデータバンドルを定期的にダウンロードします。(OPA はバンドルサービスの実装とセットアップを提供しません）。バンドルサービスからプルされたすべてのポリシーと外部データはメモリに保存されます。このオプションは、外部データサイズが大きすぎてメモリに保存できない場合、またはデータが頻繁に変更された場合は機能しません。

バンドル機能の詳細については、[OPA ドキュメント](https://www.openpolicyagent.org/docs/latest/external-data/#option-3-bundle-api)を参照してください。

## OPA レプリケーション (データのプッシュ)
<a name="opa-replication"></a>

OPA レプリケーションアプローチは、外部データ取得の以下のプロセスをサポートします。

1. PEP は認可決定をリクエストします。

1. データレプリケーターはデータを OPA にプッシュします。

1. データレプリケーターは、データソース (複数可) からデータをレプリケートします。

このバンドルアプローチの代わりに、データは OPA によって定期的にプルされるのではなく、 にプッシュされます。(OPA はレプリケーターの実装とセットアップを提供しません）。OPA はすべてのデータをメモリに保存するため、プッシュアプローチのデータサイズにはバンドルアプローチと同じ制限があります。プッシュオプションの主な利点は、毎回すべての外部データを置き換えるのではなく、OPA のデータをデルタで更新できることです。これにより、頻繁に変更されるデータセットに対してプッシュオプションがより適切になります。 

レプリケーションオプションの詳細については、[OPA ドキュメント](https://www.openpolicyagent.org/docs/latest/external-data/#option-4-push-data)を参照してください。

## OPA 動的データ取得
<a name="opa-dynamic-data-retrieval"></a>

取得する外部データが大きすぎて OPA のメモリにキャッシュできない場合、認可決定の評価中に外部ソースからデータを動的にプルできます。このアプローチを使用すると、データは常に最新の状態になります。このアプローチには、ネットワークのレイテンシーとアクセシビリティという 2 つの欠点があります。現在、OPA は HTTP リクエストを介してのみ実行時にデータを取得できます。外部データソースへの呼び出しがデータを HTTP レスポンスとして返すことができない場合は、このデータを OPA に提供するカスタム API またはその他のメカニズムが必要です。OPA は HTTP リクエストを介してのみデータを取得できるため、データの取得速度は極めて重要です。可能であれば、Amazon DynamoDB AWS のサービス などの を使用して外部データを保持することをお勧めします。

プルアプローチの詳細については、[OPA ドキュメント](https://www.openpolicyagent.org/docs/latest/external-data/#option-5-pull-data-during-evaluation)を参照してください。

## OPA での実装に認可サービスを使用する
<a name="using-an-authorization-service-for-implementation-with-opa"></a>

バンドル、レプリケーション、または動的プルアプローチを使用して外部データを取得する場合は、認可サービスがこのやり取りを容易にすることをお勧めします。これは、認可サービスが外部データを取得し、それを OPA の JSON に変換して認可を決定できるためです。次の図は、認可サービスがこれら 3 つの外部データ取り出しアプローチでどのように機能するかを示しています。

![OPA を使用した外部データの取得](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/saas-multitenant-api-access-authorization/images/opa-external-data.png)


**OPA フローの外部データの取得 – 決定時にバンドルまたは動的データの取得** (図では赤い番号のコールアウトで示されています）。

1. OPA は認可サービスのローカル API エンドポイントを呼び出します。このエンドポイントは、認可の決定時に動的データを取得するバンドルエンドポイントまたはエンドポイントとして設定されます。

1. 認可サービスは、外部データソースをクエリまたは呼び出して外部データを取得します。(バンドルエンドポイントの場合、このデータには OPA ポリシーとルールも含まれます。 バンドルの更新は、データとポリシーの両方を OPA のキャッシュで置き換えます）。

1. 認可サービスは、返されたデータに必要な変換を実行して、予想される JSON 入力に変換します。

1. データは OPA に返されます。バンドル設定のためにメモリにキャッシュされ、動的認可の決定にすぐに使用されます。

**OPA フローの外部データの取得 – レプリケーター** (図では青色の番号付きコールアウトで示されています）。

1. レプリケーター (認可サービスの一部) は外部データソースを呼び出し、OPA で更新するデータを取得します。これには、ポリシー、ルール、外部データが含まれます。この呼び出しは、設定された頻度で行うことも、外部ソースのデータ更新に応答して行うこともできます。

1. 認可サービスは、返されたデータに必要な変換を実行して、それを予想される JSON 入力に変換します。

1. 認可サービスは OPA を呼び出し、データをメモリにキャッシュします。認可サービスは、データ、ポリシー、およびルールを選択的に更新できます。