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";
String folderName = "管理フォルダ名";
Storage storage = getStorage();
Storage.ManagedFolders folder = storage.managedFolders();
Storage.ManagedFolders.GetIamPolicy iamPolicy = folder.getIamPolicy(bucketId,folderName);
Policy content = iamPolicy.execute();
//更新内容を設定
Storage.ManagedFolders.SetIamPolicy policy = buckets.setIamPolicy(bucketId,folderName,content);
Policy res = policy.execute();
System.out.println(res);
}
1.2.1. HTTPリクエスト
PUT: https://storage.googleapis.com/storage/v1/b/{バケットID}/managedFolders/{管理フォルダ名}/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 | インベントリ レポートのオブジェクト メタデータに対する読み取りアクセス権 |
おしまい。。