共有と共同作業

このドキュメントでは、一般的なデータ共有および共同作業のさまざまなシナリオについて説明します。シナリオを実装するために、プロジェクトとバケットの Identity and Access Management(IAM)ポリシーとオブジェクトのアクセス制御リスト(ACL)を構成する方法についても説明します。

機密データの保存と更新

このシナリオでは、ある企業のマーケティング アナリストが、Cloud Storage を使って、機密の収益予測や販売予測データをバックアップしたいと考えています。このデータにアクセスできるユーザーを、マーケティング アナリストのみにする必要があります。この企業の Cloud Storage アカウントを統括し、管理しているのは IT 部署です。主な管理業務には、社内のさまざまな部署が Cloud Storage にアクセスできるようにバケットを作成して共有することが含まれます。

マーケティング アナリストの守秘義務とプライバシーのニーズを満たすには、バケットとオブジェクトの権限によって、スプレッドシートの保存先のバケットを IT スタッフが保守できるようにすると同時に、バケットに保存されているデータを IT スタッフが表示 / ダウンロードできないようにすることが必要です。これを行うには、finance-marketing というバケットを作成し、リストされているリソースに対する次の役割を、指定されたメンバーに付与します。

役割 リソース メンバー 説明
roles/storage.legacyBucketOwner バケット finance-marketing IT スタッフ IT スタッフにバケットの roles/storage.legacyBucketOwner の役割を追加すると、オブジェクトの削除やバケットの IAM ポリシーの変更など、一般的なバケット管理タスクを実行できるようになります。その場合、IT スタッフは finance-marketing バケットの内容を一覧表示することもできますが、内容の表示やダウンロードはできません。
roles/storage.objectCreator バケット finance-marketing マーケティング アナリスト マーケティング アナリストにバケットについての roles/storage.objectCreator の役割を与えると、バケットにオブジェクトをアップロードすることができるようになります。アナリストはアップロードしたオブジェクトの所有者になり、そのオブジェクトを表示、更新、削除できます。

これらの役割により、マーケティング アナリストがバケットに追加したオブジェクトは、アナリスト自身以外のだれも表示 / ダウンロードすることができません。ただし、アナリストは、オブジェクトの ACL を変更することにより、他のユーザーにアクセスを許可することができます。このようにしても IT スタッフは、必要に応じて finance-marketing バケットの内容の一覧表示、およびバケットに保存されているファイルの削除や上書きをすることができます。

シナリオの実装

実行内容

シナリオ実装のためには、次のアクションを実行する必要があります。

  1. finance-marketing という名前のバケットを作成します。その手順については、バケットの作成をご覧ください。

  2. 各 IT スタッフ メンバーに、バケットに対する roles/storage.legacyBucketOwner の役割を与えます。その手順については、バケットレベルのポリシーにメンバーを追加するをご覧ください。

IT スタッフの実行内容

シナリオ実装のため、IT スタッフは次のアクションを実行する必要があります。

  1. マーケティング アナリストに、バケットに対する roles/storage.objectCreator を与えます。その手順については、バケットレベルのポリシーにメンバーを追加するをご覧ください。

ベンダー向けドロップ ボックス

このシナリオでは、ある建設会社がさまざまなプロジェクトの建築計画を提供している複数の建築設計会社(ベンダー)と連携しています。建設会社は、ベンダー会社がプロジェクトのさまざまなマイルストーンで建築計画をアップロードできるようにベンダー向けドロップ ボックスを設定する必要があります。ドロップ ボックスでは、建設会社のクライアントのプライバシーを守る必要があります。つまり、このドロップ ボックスでは、ベンダーが他のベンダーの仕事を見られないようにしなければなりません。これを行うには、ベンダーごとに別々のバケットを作成して、リストされたリソースに対する次の役割を、指定されたメンバーに付与します。

役割 リソース メンバー 説明
roles/owner プロジェクト全体 建設会社のマネージャ 建設会社のマネージャに、プロジェクト レベルで roles/owner の役割を付与して、ベンダーごとにバケットを作成できるようにします。
roles/storage.objectViewer プロジェクト全体 建設会社のマネージャ roles/storage.objectViewer を付与された建設会社のマネージャは、ベンダーがアップロードするオブジェクトをダウンロードすることができます。
roles/storage.legacyBucketOwner 各ベンダーのバケット 建設会社のマネージャ roles/storage.legacyBucketOwner の役割を使用することにより、建設会社のマネージャは各バケットの内容を一覧表示したり、プロジェクトの各マイルストーンの終わりにオブジェクトを削除したりすることができます。
roles/storage.objectAdmin 各ベンダーのバケット バケットに関連するベンダー 各ベンダーに、それぞれのバケットについての roles/storage.objectAdmin を与えると、オブジェクトをアップロードしたり、バケット内のオブジェクトをリストしたり、各オブジェクトにアクセスできるユーザーを制御したりする機能を含め、ベンダーは、バケット内のオブジェクトを完全に制御できるようになります。バケットに対する役割などのメタデータを変更または表示することや、プロジェクト内の他のバケットを一覧表示したり表示したりすることができず、ベンダー間のプライバシーが保護されます。

シナリオの実装

実行内容

シナリオ実装のためには、次のアクションを実行する必要があります。

  1. 建設会社のマネージャに、プロジェクトについての roles/owner の役割と、プロジェクトについての roles/storage.objectViewer の役割を与えます。その手順については、プロジェクト レベルのポリシーにメンバーを追加するをご覧ください。

建設会社のマネージャの実行内容

建設会社のマネージャは、シナリオ実装のために次のアクションを実行する必要があります。

  1. ベンダーごとに個別のバケットを作成します。その手順については、バケットの作成をご覧ください。

    建設会社のマネージャには roles/owner の役割が与えられているため、作成するバケットごとに roles/storage.legacyBucketOwner の役割が自動的に与えられます。

  2. 各ベンダーに、それぞれのバケットについて roles/storage.objectAdmin を与えます。その手順については、バケットレベルのポリシーにメンバーを追加するをご覧ください。

  3. ベンダーが Google Cloud Platform Console を使用する予定の場合は、以下の形式でバケットへのリンクを提供します。

    console.cloud.google.com/storage/browser/[BUCKET_NAME]

    [BUCKET_NAME] はベンダーのバケットの名前です。

ベンダーの作業

各ベンダーは、シナリオ実装のために次のアクションを実行する必要があります。

  1. 割り当てられたバケットにオブジェクトをアップロードします。そのための最も簡単な方法は、Google Cloud Platform Console を使用することです。gsutil コマンドライン ツールなどの他の方法では、使用する前に追加設定が必要です。その手順については、オブジェクトのアップロードをご覧ください。

認証によるブラウザでのダウンロード

このシナリオでは、クライアントは、ブラウザでの単純なダウンロードにより特定のユーザーにファイルを利用させたいと考えています。これは、Cloud Storage の Cookie ベースの認証を使用することで実現できます。この機能を使用するには、ユーザーにオブジェクトへのアクセス権限を付与し、そのユーザーにオブジェクトへの特殊な URL を提供します。ユーザーがこの URL をクリックすると、Cloud Storage により Google アカウントにログインするよう求められ(まだログインしていない場合)、オブジェクトがそのユーザーのパソコンにダウンロードされます。次のユーザーがオブジェクトをダウンロードできます。

その他のすべてのユーザーには、403 Forbidden (access denied) のエラーが返されます。

シナリオの実装

Cookie ベースの認証は、一般的な次の 4 つの手順で構成されます。

  1. バケットを作成します。 その手順については、バケットの作成をご覧ください。

    所有するプロジェクトの中にバケットを作成する場合、バケットにオブジェクトをアップロードし、バケットにアクセスできるユーザーを変更するためのアクセス許可が自動的に付与されます。

  2. 共有するオブジェクトをアップロードします。 その手順については、オブジェクトのアップロードをご覧ください。

    オブジェクトをアップロードすると、そのオブジェクトの所有者になり、オブジェクトの ACL を変更することができます。

  3. ユーザーにオブジェクトへのアクセス権を与えます。 これは、次の 2 つのうちのいずれかの方法で実行できます。

    1. バケットの IAM ポリシーを変更して、対象となる各ユーザーに roles/storage.objectViewer 役割を与えます。これは、バケット内のすべてのオブジェクトに適用されます。その手順については、バケットレベルのポリシーにメンバーを追加するをご覧ください。

    2. オブジェクトの ACL を変更して、対象となる各ユーザーに個々のオブジェクトの READ 権限を与えます。その手順については、ACL の設定をご覧ください。

  4. ユーザーにオブジェクトへの特殊な URL を提供します。

    認証によるブラウザでのダウンロードでは、特定の URL エンドポイント経由で Cloud Storage にアクセスします。次の URL を使用します。[VALUES_IN_BRACKETS] は適切な値で置き換えます。

    https://storage.cloud.google.com/[BUCKET_NAME]/[OBJECT_NAME]

    それを表示できるのは適切な ACL または IAM 権限を与えられたユーザーのみであるため、この URL をどのように使用可能にするかは重要ではありません。URL をユーザーに直接送ったり、ウェブページに投稿したりできます。

グループを使用してアクセスを制御する

このシナリオでは、新しいソフトウェアを試すように招待したユーザーなど、特定のユーザーだけがオブジェクトを利用できるようにしたいと考えています。また、多くのユーザーを招待しますが、ユーザーごとに各オブジェクトに対する権限を個別に設定することはしないようにします。同時に、オブジェクトを公開して招待したユーザーにオブジェクトにアクセスするためのリンクを送信するという方法は使用しません。招待されていないユーザーにリンクが送信される危険があるからです。

このシナリオを扱う 1 つの方法は、Google グループを使用することです。グループを作成し、招待したユーザーのみをグループに追加することができます。次に、そのグループ全体にオブジェクトへのアクセス権を与えることができます。

役割 リソース メンバー 説明
roles/storage.objectViewer 「ホワイトリスト」バケット Google グループ Google Group にバケットについての roles/storage.objectViewer の役割を与えることにより、その Google Group に属するユーザーがそのバケット内のオブジェクトを表示できるようになります。グループ外のユーザーはだれもオブジェクトにアクセスできません。

シナリオの実装

  1. Google グループを作成し、ユーザーを追加します。その手順については、グループの作成をご覧ください。

  2. バケットを作成します。その手順については、バケットの作成をご覧ください。

  3. オブジェクトをバケットにアップロードします。その手順については、オブジェクトのアップロードをご覧ください。

  4. Google グループにオブジェクトへのアクセス権を与えます。

    • IAM 役割 storage.objectViewer を使用すると、バケット内のすべてのオブジェクトへの表示アクセス権限を付与できます。その手順については、バケットレベルのポリシーにメンバーを追加するをご覧ください。

    • バケットのうち一部のオブジェクトにのみアクセスを許可する場合は、これらの個々のオブジェクトに読み取り ACL を設定します。その手順については、ACL の設定をご覧ください。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Storage ドキュメント