IBM Cloud Docs
個々のバケットへのアクセス権限の割り当て

個々のバケットへのアクセス権限の割り当て

UI または CLI を使用してポリシーを作成することにより、バケットに対するアクセス役割をユーザーおよびサービス ID に割り当てます。

バケット
アクセス役割 アクション例
マネージャー オブジェクトの公開、バケットおよびオブジェクトの作成と破棄
ライター バケットおよびオブジェクトの作成と破棄
リーダー バケットをリストし、オブジェクトをリストし、オブジェクトをダウンロードします。
コンテンツ・リーダー オブジェクトの一覧表示およびダウンロード
オブジェクト・リーダー オブジェクトのダウンロード
オブジェクト・ライター オブジェクトのアップロード

ユーザーへのアクセス権限の付与

ユーザーがコンソールを使用できるようにする必要があり、インスタンス内のすべてのバケットのリストを表示できる場合は、カスタムのプラットフォーム・アクセス役割を使用できます。 これにより、特定のバケットの内容のみを表示できます。 ユーザーが他のバケットの名前を読み取ることが適切でない場合は、API を使用してカスタム・ポータルまたはその他のユーザー・インターフェースを設計および実装する必要があります。

ユーザが API を使ってデータを操作し、コンソールへのアクセスを必要とせず_、_アカウントのメンバーである場合、デフォルトのロールを使って、親インスタンスへのアクセスなしに単一のバケットへのアクセスを許可することができます。

ポリシーの適用

IAM ポリシーは、最高レベルのアクセス権限から、最も制限されるレベルまで階層的に適用されます。 競合がある場合は、より権限が容認されるポリシーのほうに解決されます。 例えば、あるユーザーにバケットに対するWriterReaderの両方のサービス・アクセス役割がある場合、Readerの役割を付与しているポリシーは無視されます。

これは、サービス・インスタンス・レベルおよびバケット・レベルのポリシーにも適用されます。

  • ユーザーが、サービス・インスタンスに対するWriterの役割と単一バケットに対するReaderの役割を付与するポリシーを保持している場合、バケット・レベルのポリシーは無視されます。
  • ユーザーが、サービス・インスタンスに対するReaderの役割と単一バケットに対するWriterの役割を付与するポリシーを保持している場合、両方のポリシーが適用され、個々のバケットに対しては、より権限が容認されるWriterの役割が優先されます。

単一のバケット(またはバケットのセット)へのアクセスを制限する必要がある場合、コンソールまたはCLIのいずれかを使用して、ユーザまたはサービスIDが他のインスタンスレベルのポリシーを持っていないことを確認します。

詳しくは、 リソースを編成してアクセス権限を割り当てるためのベスト・プラクティス を参照してください。

ユーザーに新しいポリシーを作成する

新しいバケット・レベルのポリシーを作成するには、以下のようにします。

  1. **「管理」メニューから「アクセス (IAM)」**コンソールにナビゲートします。
  2. 左側のナビゲーション・メニューから**「ユーザー」**を選択します。
  3. ユーザーを選択します。
  4. **「アクセス・ポリシー」**タブを選択して、ユーザーの既存のポリシーを表示するか、新規ポリシーを割り当てるか、既存のポリシーを編集します。
  5. **「アクセス権限の割り当て」**をクリックして、新規ポリシーを作成します。
  6. **「リソースへのアクセス権限の割り当て」**を選択します。
  7. 最初に、サービス・メニューから**「Cloud Object Storage」**を選択します。
  8. 次に、適切なサービス・インスタンスを選択します。 bucket「リソース・タイプ」フィールドにと入力し、**「リソース ID」**フィールドにバケット名を入力します。
  9. 必要なサービス・アクセス役割を選択します。 アクションの数を指定してロズンジを選択すると、図 1 の「コンテンツ・リーダー」の例のように、役割で使用可能なアクションが表示されます。
  10. **「割り当て」**をクリックします。

コンテンツリーダーの役割ごとのアクション例
役割情報

**「リソース・タイプ」フィールドまたは「リソース」**フィールドをブランクのままにすると、インスタンス・レベルのポリシーが作成されるので注意してください。

ユーザー CLI コマンドの新規ポリシーの作成

端末から以下のコマンドを実行します。

ibmcloud iam user-policy-create <user-name> \
      --roles <role> \
      --service-name cloud-object-storage \
      --service-instance <resource-instance-id> \
      --resource-type bucket \
      --resource <bucket-name>

既存のポリシーをリストするには、以下のようにします。

ibmcloud iam user-policies <user-name>

既存のポリシーを編集するには、以下のようにします。

ibmcloud iam user-policy-update <user-name> <policy-id> \
      --roles <role> \
      --service-name cloud-object-storage \
      --service-instance <resource-instance-id> \
      --resource-type bucket \
      --resource <bucket-name>

サービス ID へのアクセス権限の付与

アプリケーションや人間以外のエンティティにバケットへのアクセスを許可する必要がある場合は、サービスIDを使用します。 サービス ID は、特にこの目的のために作成することも、既に使用されている既存のサービス ID にすることもできます。

ユーザーに新しいポリシーを作成する

  1. **「管理」メニューから「アクセス (IAM)」**コンソールにナビゲートします。
  2. 左側のナビゲーション・メニューから**「サービス ID」**を選択します。
  3. サービス ID を選択して既存のポリシーを表示し、新規ポリシーを割り当てるか、既存のポリシーを編集します。
  4. サービス・インスタンス、サービス ID、および目的の役割を選択します。
  5. bucket「リソース・タイプ」フィールドにと入力し、**「リソース」**フィールドにバケット名を入力します。
  6. **「実行 (Submit)」**をクリックします。

**「リソース・タイプ」フィールドまたは「リソース」**フィールドをブランクのままにすると、インスタンス・レベルのポリシーが作成されるので注意してください。

サービスIDの新しいポリシーを作成する

端末から以下のコマンドを実行します。

ibmcloud iam service-policy-create <service-id-name> \
      --roles <role> \
      --service-name cloud-object-storage \
      --service-instance <resource-instance-id> \
      --resource-type bucket \
      --resource <bucket-name>

既存のポリシーをリストするには、以下のようにします。

ibmcloud iam service-policies <service-id-name>

既存のポリシーを編集するには、以下のようにします。

ibmcloud iam service-policy-update <service-id-name> <policy-id> \
      --roles <role> \
      --service-name cloud-object-storage \
      --service-instance <resource-instance-id>
      --resource-type bucket \
      --resource <bucket-name>