このページでは、Consent Management API と、それを使用してユーザーの同意とプライバシーを管理する方法について説明します。
Consent Management API は、同意とプライバシーのアーキテクチャの構成要素であり、ユーザーの同意とデータ プライバシーのスケーラブルで安全な管理を実現します。Consent Management API は、ユーザーから受け取った同意情報を保存し、ユースケースごとに許可されたデータを追跡し、アプリケーションがユーザーの指示どおりにのみデータを使用できるよう支援します。
Consent Management API の情報フロー
Consent Management API における同意とプライバシー情報のフローは次のようになります。
- アプリケーションは、プライバシー オプションをユーザーに提示してから、Consent Management API 内で同意レコードを作成または修正して、該当のユーザーの決定を示します。
- アプリケーションでデータをさまざまなデータストアに書き込むと、アプリケーションは Consent Management API インスタンスにそのデータの場所と特性を登録します。
- 特定のユースケースに対するデータの使用の同意が得られているかどうかをアプリケーションが判断する必要がある場合、要求されたデータと提案された用途で Consent Management API 向けのリクエストを作成します。
- Consent Management API は、要求されたデータと提案された用途を保存された同意を比較し、有効な同意がなされていれば、肯定的なレスポンスを返します。有効な同意がなされていない場合は、空のレスポンスが返されます。
次の図は、Consent Management API の情報フローを示しています。
Consent Management API 内で同意データを整理する方法の詳細については、Consent Management API データモデルをご覧ください。
ポリシー決定ポイント
Consent Management API は、以下のとおり、同意とプライバシーのアーキテクチャ内でポリシー決定ポイントとして機能します。
- アプリケーションのユーザーにより付与された同意ポリシーを保存します。
- 承認済みのクライアント アプリケーションにより作成されたデータアクセス クエリを受け入れます。
- アクセスクエリを保存された同意ポリシーと比較して評価します。
- クライアント アプリケーションに同意ポリシーを適用するため、アクセス判定を行います。
ポリシーの適用
Consent Management API では、以下のとおり、同意とプライバシーのアーキテクチャ内でのポリシーの適用をサポートしています。
- アプリケーションまたはポリシー適用ポイントによって作成されたアクセス判定クエリを処理します。
- 指定した目的のためにリソースにアクセスできるかどうかを評価します。
- 指定された目的でアクセスできるすべてのリソースを決定します。
- 適用ポイントがリクエスト属性と省略可能なリソース名のみを指定すればよいよう、リソースを属性と同意ポリシーに関連付けます。
- 同意が追加、更新、取り消しされた場合であっても、同意の現在の状態を適用してアクセス判定を返します。
Consent Management API を使用して同意とプライバシーのアーキテクチャ内で複数のポリシー適用パターンを実装できます。以下に、ポリシー適用パターンの例を一覧で示します。
- 信頼できるアプリケーションによる適用。ユーザーの ID と利用資格を確認したアプリケーションは、関連プロパティを Consent Management API に転送できます。これにより、ユーザーは同意を送信または更新でき、アプリケーションは、確認済みの利用資格によって、そのユースケースの同意情報にのみアクセスできます。
- お客様のミドルウェアによる適用。ユーザーの ID と利用資格の確認を必要とするアプリケーションでは、Consent Management API を使用して、任意のリクエストに対してアクセス権が許可されているかどうかを判断できます。
- リソース サーバーによる適用。リソース サーバーは、必要に応じて、ユーザーの ID を使用して他のアプリケーションから利用資格を取得し、Consent Management API を呼び出してアクセスを確認してから、リクエストに応じます。
ポリシーの表現
Consent Management API 内の同意ポリシーは、ポリシーが適用されるデータを定義する一連のリソース属性値と、そのポリシーが有効となる条件を定義する承認ルールで構成されます。
1 つのリソース属性に対し複数の値が指定されている場合、それらのいずれかの値に一致するデータに対してポリシーが適用されます。ポリシーに複数のリソース属性がある場合、ポリシーの適用のため、それらのリソース属性のそれぞれが一致する必要があります。
承認ルールでは、Common Expression Language(CEL)の制約適用版を使用して、関連するデータへのアクセスを許可するリクエスト属性値の間の関係を柔軟に記述します。CEL の詳細については、Common Expression Language をご覧ください。
同意リソースには、ユーザーに提示される同意に関する質問に対する肯定的なレスポンスを表すことのできる複数の同意ポリシーを含めることができます。同意ポリシーは、同意フォーム全体または組織と管理上の決定を表すためにも使用できます。
以下の図は、Consent Management API でポリシーを表す方法を示しています。
この図は、リソースとリクエストの属性を使用してシンプルな同意ポリシーを構成する方法を示しています。複数のポリシーを組み合わせてより複雑なポリシーを構成することもできます。
同意レコード
Consent Management API には、以下の種類の同意レコードが保存されます。
- 同意アーティファクト: ユーザーが承認または署名したドキュメントを保存します。これらのレコードには、同意プロセス中にユーザーに表示される画面の PDF または画像を含めることができます。また、署名、タイムスタンプ、同意情報を記録するためのその他の重要情報の保存にも使用できます。
- 同意リソース: 構成済みの同意属性に関してユーザーが付与した同意を記述します。Consent Management API はこれらのレコードを評価して、あるユースケースでデータが同意されているかどうかを判定します。同意リソースには、付与された同意と同意ステータスが含まれます。これらのレコードは、対応する同意アーティファクトに関連付けることもできます。
同意レコードの詳細については、ユーザーの同意の作成と更新をご覧ください。
データ マネジメント
Consent Management API では、データを文字列として記述できる限り、Google Cloud、オンプレミス、または別のクラウド プロバイダの独自のスキーマに保存されているデータを管理できます。Consent Management API では、ユーザー データのマッピングを使用して、サービス自体にデータを保存することなく管理対象データを追跡できます。
各ユーザー データのマッピングには、データ ID、ユーザー ID、一連のリソース属性値が含まれています。データ ID は、ユーザー データのマッピングで表されるデータを一意に識別する文字列です。ユーザー ID は、データをユーザーに関連付ける不透明 ID です。リソース属性値は、属性定義リソースで定義された語彙を使用して、データの特性を記述します。
同意により管理されるデータの一般的な保管場所は次のとおりです。
- FHIR ストア
- BigQuery
- Cloud Storage
ユーザー データのマッピングの作成に関する詳細については、ユーザーデータの登録をご覧ください。
アクセス権の検証
アクセス検証リクエストは、特定のデータ要素、任意のユーザーに関連付けられたすべてのデータ要素、またはデータストア全体に対して提案済み用途がアクセスできるかを把握する必要のあるアプリケーションにより作成されます。Consent Management API は、指定されたデータと提案された用途について権限を付与する有効な同意がなされているかどうかを評価することで、リクエストを許可するかどうかを判断します。Consent Management API は次のように評価を行います。
- Consent Management API は、提案された用途に関するリクエスト属性値を含むアクセス判定リクエストと、ユーザー ID またはリソース属性値により記述された 1 個のターゲット リソースまたは一定範囲のターゲット リソースを受信します。
- 一定範囲のターゲット リソースが指定された場合、Consent Management API は、その範囲に一致するリソースを特定します。たとえば、一定範囲のリソース属性値を定義すると、この範囲内のすべてのリソースがアクセス判定リクエストで使用されます。
- 一致したすべてのリソースの同意が特定されます。
- 提案された用途は、該当する同意の承認ルールと比較して評価されます。
- いずれかの承認ルールでこの組み合わせのリクエスト属性値が許可されている場合、評価されたリソースごと肯定的なアクセス判定結果が返されます。
デフォルトでは、アクセス権判定は、アクティブな同意が得られた場合のみ行われます。アクセス判定リクエストでドラフト状態の同意を直接指定することで、ドラフト状態の同意を含めるアクセス権判定に含めることができます。期限切れ、取り消し、または拒否された状態の同意は、すべてのアクセス判定リクエストで無視されます。
アクセス判定リクエストの作成の詳細については、アクセス権の判定をご覧ください。