権限を作成する - Amazon Simple Storage Service

権限を作成する

Amazon S3 Access Grants で 少なくとも 1 つのロケーションを登録 した後に、アクセス権限を作成できます。アクセス権限は、登録されたロケーションにアクセスするアクセス許可を被付与者に付与します。

被付与者は、AWS Identity and Access Management (IAM) ユーザーまたはロール、またはディレクトリユーザーまたはグループにすることができます。ディレクトリ ユーザーは、S3 Access Grants インスタンスに関連付けられている AWS IAM Identity Center インスタンスに追加した、社内ディレクトリまたは外部アイデンティティソースのユーザーです。IAM アイデンティティセンターから特定のユーザーまたはグループに対する権限を作成するには、IAM アイデンティティセンターでそのユーザーを識別するために使用する GUID (例: a1b2c3d4-5678-90ab-cdef-EXAMPLE11111) を検索します。

バケット、プレフィックス、またはオブジェクトへのアクセスを付与できます。Amazon S3 のプレフィックスは、バケット内のオブジェクトを整理するために使用されるオブジェクトキー名の先頭にある文字列です。これには、使用できる任意の文字列を使用できます。例えば、engineering/プレフィックスで始まるバケット内のオブジェクトキー名などです。

サブプレフィックス

登録したロケーションへのアクセスを付与する場合、Subprefix フィールドを使用して範囲をバケット内の特定のプレフィックスまたはバケット内の特定のオブジェクトに絞り込むことができます。

デフォルトロケーション s3:// に対しては、被付与者がリージョンのすべてのバケットにアクセスできるアクセス権限を作成することはできません。デフォルトロケーション s3:// の場所を付与場所として選択した場合は、Subprefix フィールドを使用して次のいずれかを指定して付与範囲を狭める必要があります。

  • バケット — s3://bucket/*

  • バケット内のプレフィックス — s3://bucket/prefix*

  • プレフィックス内のプレフィックス — s3://bucket/prefixA/prefixB*

  • オブジェクト — s3://bucket/object-key-name

登録済みロケーションがバケットであるアクセス権限を作成する場合、Subprefix フィールドには次のいずれかを渡すことができます。

  • バケット内のプレフィックス — prefix*

  • プレフィックス内のプレフィックス — prefixA/prefixB*

  • オブジェクト — /object-key-name

Amazon S3 コンソールに表示される権限範囲、または API や AWS Command Line Interface (AWS CLI) レスポンスで返される GrantScope は、ロケーションパスと Subprefix を連結した結果です。この連結されたパスが、アクセスを許可する S3 バケット、プレフィックス、またはオブジェクトに適切にマップされていることを確認します。

単一のオブジェクトのみへのアクセスを許可するアクセス権限を作成する場合は、API コールまたは CLI コマンドで s3PrefixTypeObject と指定します。

注記

バケットがまだ存在していない場合、そのバケットへの許可は作成できません。ただし、まだ存在しないプレフィックスに対して許可を作成することはできます。

Amazon S3 コンソール、AWS CLI、Amazon S3 REST API、AWS SDK を使用して アクセス権限を作成できます。

アクセス権限を作成するには
  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. 左側のナビゲーションペインで、[Access Grants] を選択します。

  3. [S3 Access Grants] ページで、取り組む S3 Access Grants インスタンスが含まれるリージョンを選択します。

    S3 Access Grants インスタンスを初めて使用する場合は、「Step 2 - ロケーションを登録する」を実行し、Access Grants インスタンスをセットアップ ウィザードの [ステップ 3] に進んでいる必要があります。S3 Access Grants インスタンスが既にある場合は、[詳細の表示] を選択して、[権限] タブで、[権限を作成] をクリックします。

    1. [権限範囲] セクションで、登録済みのロケーションを選択または入力します。

      デフォルトロケーションの s3:// を選択した場合は、[サブプレフィックス] ボックスを使用してアクセス権限の範囲を絞り込むことができます。詳細については、「サブプレフィックス」を参照してください。単一のオブジェクトのみへのアクセスを付与するには、[Grant scope is an object] を選択します。

    2. [許可とアクセス] で、[アクセス許可] レベルに [読み取り][書き込み]、または両方を選択します。

      次に、[被付与者タイプを選択] をクリックします。社内ディレクトリを IAM アイデンティティセンターに追加して、この IAM アイデンティティセンターインスタンスを S3 Access Grants インスタンスに関連付けた場合は、[IAM アイデンティティセンターからのディレクトリ ID] を選択できます。このオプションを選択した場合は、IAM アイデンティティセンターからユーザーまたはグループのアイデンティティを取得し、このセクションに入力します。

      [被付与者タイプ] が IAM ユーザーまたはロールの場合は、[IAM プリンシパル] を選択します。[IAM プリンシパルタイプ][ユーザー] または [ロール] を選択します 次に、[IAM プリンシパルユーザー] で、リストから選択するか、アイデンティティを入力します。

    3. S3 Access Grants 権限を作成するには、[次へ] または [権限を作成] をクリックします。

  4. [次へ] または [権限を作成] が無効になっている場合:

    権限が作成できない
    • まず、S3 Access Grants インスタンスで ロケーションを登録 する必要がある場合があります。

    • アクセス権限を作成するのに必要な s3:CreateAccessGrant アクセス許可がない可能性があります。アカウント管理者に連絡してください。

AWS CLI をインストールするには、「AWS Command Line Interface ユーザーガイド」の「AWS CLI をインストールする」を参照してください。

IAM プリンシパルのアクセス許可リクエストを作成する方法と、社内ディレクトリのユーザーまたはグループにアクセス権限リクエストを作成する方法の例は、次のとおりです。

次のコマンド例を使用する際は、user input placeholders をユーザー自身の情報に置き換えます。

注記

単一のオブジェクトのみへのアクセスを許可するアクセス権限を作成する場合は、必要な --s3-prefix-type Object パラメータを含めます。

例 IAM プリンシパルのアクセス権限リクエストを作成する
aws s3control create-access-grant \ --account-id 111122223333 \ --access-grants-location-id a1b2c3d4-5678-90ab-cdef-EXAMPLE22222 \ --access-grants-location-configuration S3SubPrefix=prefixB* \ --permission READ \ --grantee GranteeType=IAM,GranteeIdentifier=arn:aws:iam::123456789012:user/data-consumer-3
例 アクセス権限のレスポンスを作成する
{"CreatedAt": "2023-05-31T18:41:34.663000+00:00", "AccessGrantId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "AccessGrantArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default/grant/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Grantee": { "GranteeType": "IAM", "GranteeIdentifier": "arn:aws:iam::111122223333:user/data-consumer-3" }, "AccessGrantsLocationId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "AccessGrantsLocationConfiguration": { "S3SubPrefix": "prefixB*" }, "GrantScope": "s3://DOC-BUCKET-EXAMPLE/prefix*", "Permission": "READ" }
ディレクトリユーザーやグループのためのアクセス権限リクエストを作成する

ディレクトリユーザーまたはグループのアクセス許可リクエストを作成するには、まず次のコマンドのいずれかを実行してディレクトリユーザーまたはグループの GUID を取得する必要があります。

例 ディレクトリユーザーやグループの GUID を取得する

IAM アイデンティティセンターユーザーの GUID は、IAM アイデンティティセンターコンソール、AWS CLI、または AWS SDK を使用して検索できます。次のコマンドは、指定した IAM アイデンティティセンターインスタンス内のユーザーを名前とアイデンティティとともに一覧表示します。

aws identitystore list-users --identity-store-id d-1a2b3c4d1234

このコマンドは、指定した IAM アイデンティティセンターインスタンスのグループを一覧表示します。

aws identitystore list-groups --identity-store-id d-1a2b3c4d1234
例 ディレクトリユーザーまたはグループのためのアクセス権限を作成する

このコマンドは IAM ユーザーまたはロールの権限の作成と似ています。ただし、被付与者タイプは DIRECTORY_USER または DIRECTORY_GROUP で、被付与者識別子がディレクトリユーザーまたはグループの GUID である点が異なります。

aws s3control create-access-grant \ --account-id 123456789012 \ --access-grants-location-id default \ --access-grants-location-configuration S3SubPrefix="DOC-EXAMPLE-BUCKET/rafael/*" \ --permission READWRITE \ --grantee GranteeType=DIRECTORY_USER,GranteeIdentifier=83d43802-00b1-7054-db02-f1d683aacba5 \

REST API でのアクセス権限管理のサポートの詳細については、「Amazon Simple Storage Service API リファレンス」の次のセクションを参照してください。

このセクションでは、AWS SDK を使用してアクセス権限を作成する方法の例を説明します。

Java

次のコマンド例を使用する際は、user input placeholders をユーザー自身の情報に置き換えます。

注記

単一のオブジェクトのみへのアクセスを許可するアクセス権限を作成する場合は、必要な .s3PrefixType(S3PrefixType.Object) パラメータを含めます。

例 アクセス権限リクエストを作成する
public void createAccessGrant() { CreateAccessGrantRequest createRequest = CreateAccessGrantRequest.builder() .accountId("111122223333") .accessGrantsLocationId("a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa") .permission("READ") .accessGrantsLocationConfiguration(AccessGrantsLocationConfiguration.builder().s3SubPrefix("prefixB*").build()) .grantee(Grantee.builder().granteeType("IAM").granteeIdentifier("arn:aws:iam::111122223333:user/data-consumer-3").build()) .build(); CreateAccessGrantResponse createResponse = s3Control.createAccessGrant(createRequest); LOGGER.info("CreateAccessGrantResponse: " + createResponse); }
例 アクセス権限のレスポンスを作成する
CreateAccessGrantResponse( CreatedAt=2023-06-07T05:20:26.330Z, AccessGrantId=a1b2c3d4-5678-90ab-cdef-EXAMPLE33333, AccessGrantArn=arn:aws:s3:us-east-2:444455556666:access-grants/default/grant/a1b2c3d4-5678-90ab-cdef-EXAMPLE33333, Grantee=Grantee( GranteeType=IAM, GranteeIdentifier=arn:aws:iam::111122223333:user/data-consumer-3 ), AccessGrantsLocationId=a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa, AccessGrantsLocationConfiguration=AccessGrantsLocationConfiguration( S3SubPrefix=prefixB* ), GrantScope=s3://DOC-BUCKET-EXAMPLE/prefixB, Permission=READ )