LoginSignup
0
0

[Cloud Storage API(V2)] JavaでバケットのIAMポリシーを更新する

Posted at

Cloud Storage API V2(Java)を使用して、
Cloud StorageのバケットのIAMポリシーを更新する方法
についてご紹介します。

IAM
Identity and Access Managementの略で
リソースへのアクセス制御を管理する機能のことです。
リソースに対し、どのユーザーがどうアクセスするか等の
ルールのことをIAMポリシーと呼びます。

APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う
を参照ください。

No 目次
1 IAMポリシーを更新
1 スコープ
2 実行
3 レスポンスの内容

1. IAMポリシーを更新

指定したバケットのIAMポリシーを更新します。

1.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

StorageScopes.CLOUD_PLATFORM
StorageScopes.DEVSTORAGE_FULL_CONTROL

⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う(2.2 Storageインスタンスを取得)
でスコープを指定してください。

1.2. 実行

getIamPolicy()でIAMポリシーを取得した後、その取得したPolicyに対して
更新内容を設定してください。

IMAポリシー取得の詳細は、
⧉[Cloud Storage API(V2)] JavaでバケットのIAMポリシーを取得する
を参照ください。

public static void main(String[] args) throws Exception{
    String bucketId = "バケットID";
    
    Storage storage = getStorage();
    Storage.Buckets buckets = storage.buckets();
    
    Storage.Buckets.GetIamPolicy iamPolicy = buckets.getIamPolicy(bucketId);  
    Policy content = iamPolicy.execute();
    //更新内容を設定
    
    Storage.Buckets.SetIamPolicy policy = buckets.setIamPolicy(bucketId,content);
    
    Policy res = policy.execute();
    System.out.println(res);
}

1.2.1. HTTPリクエスト

PUT: https://storage.googleapis.com/storage/v1/b/{バケットID}/iam
が実行されます。

1.2.2. クエリパラメータ

クエリパラメータはありません。

1.2.3. リクエストボディ

Policyのsetメソッドにより、リクエストボディを追加できます。

メソッド 引数 説明
setBindings List<Policy.Bindings> 一連のアクセス許可を伴うロールと、そのロールを持つプリンシパルとの関連付け
setEtag String ポリシーのHTTPエンティティタグ

Policy.Bindings(Set)

メソッド 引数 説明
setCondition Expr このバインディングに関連付けられた条件オブジェクト

Expr(Set)

メソッド 引数 説明
setDescription String 条件の説明

1.3. レスポンスの内容

Policy

メソッド 戻り値 説明
getVersion Integer IAMポリシーのバージョン
getKind String リソースの種類
固定文字列:"storage#policy"
getResourceId String このポリシーが属するリソースID
getBindings List<Policy.Bindings> 一連のアクセス許可を伴うロールと、そのロールを持つプリンシパルとの関連付け
getEtag String ポリシーのHTTPエンティティタグ

Policy.Bindings

メソッド 戻り値 説明
getRole String Storageロール
getMembers List<String> 基本ロールとプロジェクトIDを組み合わせた文字列

次の文字列を配列で返す
"projectOwner:{プロジェクトID}"
"projectEditor:{プロジェクトID}"
"projectViewer:{プロジェクトID}"
getCondition Expr このバインディングに関連付けられた条件オブジェクト

Expr

メソッド 戻り値 説明
getTitle String 条件のタイトル
getDescription String 条件の説明
getExpression String Common Expression Language (CEL) のサブセットを使用した属性ベースの論理式

基本ロール

ロール 概要
Viewer 既存のリソースやデータの表示(ただし変更ではない)など、状態に影響を与えない読み取り専用の権限
Editor すべての閲覧者権限に加えて、既存のリソースの変更など、状態を変更するアクションに対する権限
Owner すべての編集者の権限に加えて、次のようなアクションの権限

Storageロール

ロール 定義値 概要
Storage オブジェクト作成者 roles/storage.objectCreator ユーザーによるオブジェクトの作成を許可
Storage オブジェクト閲覧者 roles/storage.objectViewer オブジェクトとそのメタデータ(ACL を除く)を閲覧するためのアクセス権
Storage オブジェクト ユーザー roles/storage.objectUser オブジェクトとマネージド フォルダ、およびそれらのメタデータを作成、表示、一覧表示、更新、削除するためのアクセス権
ストレージ オブジェクト管理者 roles/storage.objectAdmin オブジェクトの一覧表示、作成、表示、削除、オブジェクトの ACL の設定など、オブジェクトのすべてを管理できる権限
ストレージ フォルダ管理者 roles/storage.folderAdmin オブジェクトとマネージド フォルダに対する完全な制御権限
Storage HMAC キー管理者 roles/storage.hmacKeyAdmin プロジェクト内の HMAC キーのすべてを管理する権限
Storage 管理者 roles/storage.admin オブジェクト ACL や IAM ポリシーの取得と設定など、バケット、マネージド フォルダ、オブジェクトに対する完全な制御権限
Storage Insights 管理者 roles/storageinsights.admin Storage Insights のインベントリ レポートと構成に対する完全な制御権限
Storage Insights 閲覧者 roles/storageinsights.viewer Storage Insights のインベントリ レポートと構成に対する読み取り専用アクセス権
Storage Insights コレクタ サービス roles/storage.insightsCollectorService インベントリ レポートのオブジェクト メタデータに対する読み取りアクセス権


おしまい。。
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