top pageへ.

Programming Room.

Google Cloud Tips.

GCS Tips.

バケットの権限設定.2019/11/13

 GCSのバケットへの、アクセス権限の設定について説明します。


おしながき

はじめに.

 バケット内のオブジェクトはデフォルトで非公開であり、プロジェクト管理者しかアクセスできません。ここではプロジェクト管理者ではない特定のユーザに、特定バケット内のオブジェクトのアップロード/ダウンロードを許可するものとして、その権限の設定方法を説明します。
 権限の設定方法はGCSでは複数用意されていますが、ここでは特定のユーザに必要な権限だけ与えるのという用途から、「Cloud IAM権限」を使用します。


GCPコンソールで設定.

 GCPコンソールのStorageブラウザからGUIで設定できます。

  1. GCPコンソールのメニューから「Storage」-「ブラウザ」を選択し、Storageブラウザを表示。
  2. バケットのリストが表示されるので、対象バケットの行の1右端にある3点リーダ「…」をクリック。
  3. ポップアップメニューから「バケットの権限を編集」をクリック。
  4. ブラウザウィンドウの左端に情報パネルの「権限」タブが表示されるので、「メンバーを追加」ボタンをクリック。
  5. 『「バケット名」にメンバーを追加します』パネルが表示されるので、「新しいメンバー」欄にアップロードするユーザのユーザアカウント(Googleメールアドレス)を入力します。
  6. 「役割を選択」をクリックし、リストから「ストレージ」-「ストレージオブジェクト管理者」を選択します。
  7. 「保存」ボタンをクリックします。


 上記の手順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.