S3 Access Grants を介して Amazon S3 データへのアクセスをリクエストする
Amazon S3 Access Grants を使用して、AWS Identity and Access Management (IAM) プリンシパル、社内ディレクトリアイデンティティ、または認証済みアプリケーションに S3 データへのアクセスを付与するアクセス権限を作成 した後、被付与者はこのデータにアクセススルタンの認証情報をリクエストできます。
アプリケーションまたは AWS のサービス API GetDataAccess
オペレーションを使用して、被付与者に代わって S3 Access Grants に S3 データへのアクセスを要求すると、S3 Access Grants はまず、ユーザーがこのアイデンティティにデータへのアクセスを付与しているかを確認します。次に S3 Access Grants は AssumeRole API オペレーションを使用して一時的な認証トークンを取得し、それをリクエスタに送信します。この一時的な認証情報トークンは AWS Security Token Service (AWS STS) トークンです。
GetDataAccess
リクエストには、一時的な認証情報が適用される S3 target
データの範囲を指定するパラメータを含める必要があります。この target
範囲は権限の範囲と同一でも、その範囲のサブセットでもかまいません。ただし、target
範囲はリクエスタに与えられた権限の範囲内である必要があります。このリクエストでは、一時認証情報の権限レベル (READ
、WRITE
、READWRITE
、など) を示す permission
パラメータも指定する必要があります。
リクエスタは、認証情報リクエストで一時トークンの特権レベルを指定できます。リクエスタはこの privilege
パラメータを使用して、一時的な認証情報のアクセス範囲を付与範囲内で拡大または縮小できます。privilege
パラメータのデフォルト値は Default
であり、返される認証情報のターゲット範囲は元の権限範囲です。privilege
でこれ以外に指定できる値は、Minimal
です。target
範囲が元の権限範囲から縮小される場合、target
範囲が権限範囲内にある限り、一時的な認証情報は target
範囲と一致するように範囲が再定義されます。
2 つの権限に対する privilege
パラメータの効果の詳細は、次のテーブルのとおりです。一方の権限の範囲は、S3://
で、amzn-s3-demo-bucket1
/bob/*
バケットの amzn-s3-demo-bucket1
bob/
プレフィックス全体が含まれます。もう一方の権限の範囲は、S3://
で、amzn-s3-demo-bucket1
/bob/reports/*
バケットの amzn-s3-demo-bucket1
bob/reports/
プレフィックスのみが含まれます。
権限範囲 | リクエスト範囲 | 特権 | 返される範囲 | 効果 |
---|---|---|---|---|
S3:// |
|
Default
|
|
リクエスタは、 |
S3:// |
|
Minimal
|
|
プレフィックス名 |
S3:// |
|
Minimal
|
|
リクエスタは、 |
S3:// |
|
Default
|
|
リクエスタは、 |
S3:// |
|
Minimal
|
|
リクエスタは、 |
durationSeconds
パラメータでは一時認証情報の有効期間を秒単位で設定します。デフォルト値は 3600
秒 (1 時間) です。リクエスタ (被付与者) は 900
秒 (15 分) から 43200
秒 (12 時間) までの範囲を指定できます。被付与者がこの最大値よりも高い値をリクエストすると、そのリクエストは失敗します。
注記
一時トークンのリクエストで、ロケーションがオブジェクトの場合は、targetType
リクエスト内のパラメータの値を Object
に設定します。このパラメータは、ロケーションがオブジェクトで、特権レベルが Minimal
の場合にのみ必要です。ロケーションがバケットまたはプレフィックスの場合、このパラメータを指定する必要はありません。
詳細については、「Amazon Simple Storage Service ユーザーガイド」の「GetDataAccess」を参照してください。
AWS Command Line Interface (AWS CLI)、Amazon S3 REST API、AWS SDK を使用して一時的な認証情報をリクエストできます。
AWS CLI をインストールするには、「AWS Command Line Interface ユーザーガイド」の「AWS CLI をインストールする」を参照してください。
次のコマンド例を使用するには、
をユーザー自身の情報に置き換えます。user input
placeholders
例 一時認証情報のリクエスト
リクエスト:
aws s3control get-data-access \ --account-id
111122223333
\ --targets3://
\amzn-s3-demo-bucket
/prefixA*--permission
READ
\ --privilege Default \ --regionus-east-2
レスポンス:
{ "Credentials": { "AccessKeyId": "
Example-key-id
", "SecretAccessKey": "Example-access-key
", "SessionToken": "Example-session-token
", "Expiration": "2023-06-14T18:56:45+00:00
"}, "MatchedGrantTarget": "s3://
*" }amzn-s3-demo-bucket
/prefixA*
Amazon S3 REST API での S3 Access Grants からの一時認証情報のリクエストのサポートの詳細については、「Amazon Simple Storage Service API リファレンス」の「https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetDataAccess.html」を参照してください。
このセクションでは、AWS SDK を使用して被付与者が一時認証情報をリクエストする方法の例を説明します。