BigQuery API V2(Java)を使用して、
BigQueryテーブルの行レベルのアクセス制御ポリシーのリストを取得する方法
についてご紹介します。
行レベルのアクセス制御ポリシー
行レベルのセキュリティを使用すると、データをフィルタリングし、ユーザーの資格条件に基づいて
テーブル内の特定の行へのアクセスを許可できます。
詳細は、⧉BigQuery の行レベルのセキュリティの概要(公式)を参照ください。
アクセス制御ポリシーを取得するには、
適切なIAM権限が付与されている必要があります。
権限付与に関しては
⧉[BigQuery API(V2)] JavaでBigQueryを使う(2.権限付与)
を参照ください。
APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[BigQuery API(V2)] JavaでBigQueryを使う
を参照ください。
No | 目次 | |
---|---|---|
1 | アクセス制御ポリシーリストを取得 | |
1 | スコープ | |
2 | 実行 | |
3 | レスポンスの内容 | |
2 | アクセス制御ポリシーを取得 | |
1 | スコープ | |
2 | 実行 | |
3 | レスポンスの内容 |
1. アクセス制御ポリシーリストを取得
指定したテーブルの行単位のアクセス制御ポリシーリストを取得します。
1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
BigqueryScopes.BIGQUERY
BigqueryScopes.CLOUD_PLATFORM
BigqueryScopes.CLOUD_PLATFORM_READ_ONLY
https://www.googleapis.com/auth/bigquery.readonly
⧉[BigQuery API(V2)] JavaでBigQueryを使う(3.2. BigQueryインスタンスを取得)
でスコープを指定してください。
1.2. 実行
public static void main(String[] args) throws Exception{
Bigquery bigquery = getBigquery();
Bigquery.RowAccessPolicies policies = bigquery.rowAccessPolicies();
Bigquery.RowAccessPolicies.List list = policies.list("プロジェクトID","データセットID","テーブルID");
ListRowAccessPoliciesResponse res = list.execute();
System.out.println(res);
}
1.2.1. HTTPリクエスト
GET: https://bigquery.googleapis.com/bigquery/v2/projects/{プロジェクトID}/datasets/{データセットID}/tables/{テーブルID}/rowAccessPolicies
が実行されます。
1.2.2. クエリパラメータ
Bigquery.RowAccessPolicies.Listメソッドにより、クエリパラメータを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setPageToken | String | ページトークン |
setPageSize | Integer | 取得する最大数 |
1.3. レスポンスの内容
ListRowAccessPoliciesResponse
メソッド | 戻り値 | 説明 |
---|---|---|
getRowAccessPolicies | List<RowAccessPolicy> | テーブルの行アクセスポリシー |
getNextPageToken | String | 次のページのトークン |
RowAccessPolicy
メソッド | 戻り値 | 説明 |
---|---|---|
getEtag | String | ハッシュ値 |
getRowAccessPolicyReference | RowAccessPolicyReference | 行アクセスポリシーのリファレンス |
getFilterPredicate | String | 行アクセスポリシーによって定義された行を表すSQLブール式 |
getCreationTime | String | 行アクセスポリシーが作成された時刻(ミリ秒) |
getLastModifiedTime | String | 行アクセスポリシーが最後に変更された時刻(ミリ秒) |
RowAccessPolicyReference
メソッド | 戻り値 | 説明 |
---|---|---|
getProjectId | String | プロジェクトID |
getDatasetId | String | データセットID |
getTableId | String | テーブルID |
getPolicyId | String | 行アクセスポリシーID |
2. アクセス制御ポリシーを取得
指定した行アクセスポリシーの情報を取得します。
2.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
BigqueryScopes.BIGQUERY
BigqueryScopes.CLOUD_PLATFORM
BigqueryScopes.CLOUD_PLATFORM_READ_ONLY
https://www.googleapis.com/auth/bigquery.readonly
⧉[BigQuery API(V2)] JavaでBigQueryを使う(3.2. BigQueryインスタンスを取得)
でスコープを指定してください。
2.2. 実行
public static void main(String[] args) throws Exception{
Bigquery bigquery = getBigquery();
Bigquery.RowAccessPolicies policies = bigquery.rowAccessPolicies();
String resource = String.format(
"projects/%s/datasets/%s/tables/%s/rowAccessPolicies/%s",
"プロジェクトID",
"データセットID",
"テーブルID",
"行アクセスポリシーID");
GetIamPolicyRequest content = new GetIamPolicyRequest();
Bigquery.RowAccessPolicies.GetIamPolicy get = policies.getIamPolicy(resource,content);
Policy res = get.execute();
System.out.println(res);
}
2.2.1. HTTPリクエスト
POST: https://bigquery.googleapis.com/bigquery/v2/projects/{プロジェクトID}/datasets/{データセットID}/tables/{テーブルID}/rowAccessPolicies/{行アクセスポリシーID}:getIamPolicy
が実行されます。
2.2.2. クエリパラメータ
クエリパラメータはありません。
2.2.3. リクエストボディ
GetIamPolicyRequestメソッドにより、リクエストボディを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setOptions | GetPolicyOptions | オプションを指定するためのオブジェクト |
GetPolicyOptions
メソッド | 引数 | 説明 |
---|---|---|
setRequestedPolicyVersion | Integer | ポリシーのフォーマットに使用されるポリシーの最大バージョン |
2.3. レスポンスの内容
Policy
メソッド | 戻り値 | 説明 |
---|---|---|
getVersion | Integer | ポリシーの形式 |
getBindings | List<Binding> | 関連付け |
getAuditConfigs | List<AuditConfig> | ポリシーのクラウド監査ログ構成 |
getEtag | String | ハッシュ値 |
Binding
メソッド | 戻り値 | 説明 |
---|---|---|
getRole | String | 割り当てられるロール |
getMembers | List<String> | メンバのプリンシパル |
getCondition | Expr | バインディングに関連付けられている条件 |
Expr
メソッド | 戻り値 | 説明 |
---|---|---|
getExpression | String | 共通式言語構文での式のテキスト表現 |
getTitle | String | 式のタイトル |
getDescription | String | 式の説明 |
getLocation | String | ファイル名やファイル内の位置などエラー報告用の式の場所を示す文字列 |
AuditConfig
メソッド | 戻り値 | 説明 |
---|---|---|
getService | String | 監査ログを有効にするサービス |
getAuditLogConfigs | List<AuditLogConfig> | 各タイプの権限のログを記録するための設定 |
AuditLogConfig
メソッド | 戻り値 | 説明 |
---|---|---|
getLogType | LogType(enum) | 構成で有効になるログのタイプ |
getExemptedMembers | List<String> | アクセス許可のログを記録しないタイプ |
LogType
定義値 | 内容 |
---|---|
LOG_TYPE_UNSPECIFIED | 使用不可 |
ADMIN_READ | 管理人が読込 |
DATA_WRITE | データの書込 |
DATA_READ | データの読込 |
メンバのプリンシパル
定義値 | 内容 |
---|---|
allUsers | インターネット上のすべてのユーザーを表す特別な識別子 |
allAuthenticatedUsers | Googleアカウントまたはサービスアカウントで認証されたユーザーを表す特別な識別子 |
user{emailid} | 特定のGoogleアカウントを表すメールアドレス |
serviceAccount:{emailid} | Googleサービスアカウントを表す電子メールアドレス |
serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}] | Kubernetesサービスアカウントの識別子 |
group:{emailid} | Googleグループを表すメールアドレス |
domain:{domain} | そのドメインのすべてのユーザーを表すGSuiteドメイン(プライマリ) |
principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value} | WorkforceIdentityプール内の単一のID |
principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{groupId} | グループ内のすべての従業員のアイデンティティ |
principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value} | 特定の属性値を持つすべての従業員ID |
principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/* | WorkforceIdentityプール内のすべてのID |
principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value} | WorkloadIdentityプール内の単一のID |
principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{groupId} | WorkloadIdentityプールグループ |
principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value} | 特定の属性を持つWorkloadIdentityプール内のすべてのID |
principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/* | WorkloadIdentityプール内のすべてのID |
deleted:user:{emailid}?uid={uniqueid} | 最近削除されたユーザーを表す電子メールアドレス(および一意の識別子) |
deleted:serviceAccount:{emailid}?uid={uniqueid} | 最近削除されたサービスアカウントを表す電子メールアドレス(および一意の識別子) |
deleted:group:{emailid}?uid={uniqueid} | 最近削除されたGoogleグループを表すメールアドレス(および一意の識別子) |
deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value} | 最近削除されたWorkforceIdentityプール内の単一ID |
おしまい。。