GCSのバケットへの、アクセス権限の設定について説明します。
おしながき
はじめに.
バケット内のオブジェクトはデフォルトで非公開であり、プロジェクト管理者しかアクセスできません。ここではプロジェクト管理者ではない特定のユーザに、特定バケット内のオブジェクトのアップロード/ダウンロードを許可するものとして、その権限の設定方法を説明します。
権限の設定方法はGCSでは複数用意されていますが、ここでは特定のユーザに必要な権限だけ与えるのという用途から、「Cloud IAM権限」を使用します。
GCPコンソールで設定.
GCPコンソールのStorageブラウザからGUIで設定できます。
- GCPコンソールのメニューから「Storage」-「ブラウザ」を選択し、Storageブラウザを表示。
- バケットのリストが表示されるので、対象バケットの行の1右端にある3点リーダ「…」をクリック。
- ポップアップメニューから「バケットの権限を編集」をクリック。
- ブラウザウィンドウの左端に情報パネルの「権限」タブが表示されるので、「メンバーを追加」ボタンをクリック。
- 『「バケット名」にメンバーを追加します』パネルが表示されるので、「新しいメンバー」欄にアップロードするユーザのユーザアカウント(Googleメールアドレス)を入力します。
- 「役割を選択」をクリックし、リストから「ストレージ」-「ストレージオブジェクト管理者」を選択します。
- 「保存」ボタンをクリックします。
上記の手順6の選択により、ユーザに与えられる権限が指定されます。ダウンロードのみに制限したいなら「オブジェクト閲覧者」になります。公式ドキュメントでは、権限ここに、役割はここに説明されています。必要最低限の権限を与えることが、セキュリティ上重要です。
クライアントライブラリで設定.
クライアントライブラリでもCloud IAM権限を設定できます。
次のコードは簡単なサンプルです。指定のバケットに、指定のユーザに指定の役割を設定します。
import com.google.cloud.Identity; import com.google.cloud.Policy; import com.google.cloud.Role; import com.google.cloud.storage.Storage; import com.google.cloud.storage.StorageOptions; class Sample { // Storageクラスのインスタンスを取得 private Storage storageInstance = StorageOptions.getDefaultInstance().getService(); public Policy addBucketIamPolicy(String bucketname, Role role, String useraccount) { Policy policy = storageInstance.getIamPolicy(bucketname); // 現在のポリシーを取得して、 Policy.Builder builder = policy.toBuilder().addIdentity(role, Identity.user(useraccount)); // そこに指定ユーザで役割を追加し、 return storageInstance.setIamPolicy(bucketname, builder.build()); // 編集したポリシーを設定。 } }
APIのリファレンスですが、com.google.cloud.storageパッケージはここにあります。com.google.cloudパッケージ直下にいるクラスは見つかりませんでした。
第2引数Roleクラスの値は、com.google.cloud.storage.StorageRolesクラスのスタティックメソッドで取得できます。これはStorage.setIamPolicy()メソッドのリファレンスで例示されているとおりです。
▲page top.
Copyright 2005-2023, yosshie.
Copyright 2005-2023, yosshie.