0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[BigQuery API(V2)] JavaでBigQueryテーブルの行レベルのアクセス制御ポリシーのリストを取得する

Posted at

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


おしまい。。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?