S3 Access Grants を使用してアクセス許可付与を作成した後、被付与者は、アクセス許可が付与された S3 データにアクセスするための認証情報をリクエストできます。被付与者は AWS Identity and Access Management (IAM) プリンシパル、企業ディレクトリアイデンティティ、または認可されたアプリケーションです。
アプリケーションまたは AWS のサービス は、S3 Access Grants GetDataAccess
API オペレーションを使用して、被付与者に代わって S3 データへのアクセスを S3 Access Grants にリクエストできます。GetDataAccess
はまず、この ID にそのデータへのアクセス権が付与されたことを確認します。次に 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
|
|
リクエスタは、 |
ディレクトリアイデンティティ
GetDataAccess
は、適切な許可付与を照合するときに、リクエストに関連するすべての ID を考慮します。企業ディレクトリアイデンティティの場合、GetDataAccess
は、ID 対応セッションに使用される IAM アイデンティティの許可付与も返します。ID 対応セッションの詳細については、「AWS Identity and Access Management ユーザーガイド」の「ID 対応コンソールセッションを使用するアクセス許可の付与」を参照してください。GetDataAccess
は、次の表に示すように、最も制限の厳しい許可付与にスコープを絞り込む認証情報を生成します。
IAM アイデンティティの許可付与スコープ | ディレクトリアイデンティティの許可付与スコープ | リクエスト範囲 | 返される範囲 | 特権 | 効果 |
---|---|---|---|---|---|
S3:// |
|
S3://
|
S3://
|
Default |
リクエスト元は、IAM ロールの許可付与の一環として、プレフィックス bob/ で始まるキー名の付いたすべてのオブジェクトにアクセスできますが、ディレクトリアイデンティティの許可付与の一環として、プレフィックス bob/images/ で制限されます。IAM ロールとディレクトリアイデンティティの両方がリクエストされた範囲 ( |
S3:// |
|
S3://
|
S3://
|
Minimal |
権限が |
S3:// |
|
S3://
|
S3://
|
Default |
リクエスト元は、ディレクトリアイデンティティの許可付与の一環として、プレフィックス bob/ で始まるキー名の付いたすべてのオブジェクトにアクセスできますが、IAM ロールの許可付与の一環として、プレフィックス bob/images/ で制限されます。IAM ロールとディレクトリアイデンティティの両方がリクエストされた範囲 ( |
S3:// |
|
S3://
|
S3://
|
Minimal |
権限が |
期間
durationSeconds
パラメータでは一時認証情報の有効期間を秒単位で設定します。デフォルト値は 3600
秒 (1 時間) です。リクエスタ (被付与者) は 900
秒 (15 分) から 43200
秒 (12 時間) までの範囲を指定できます。被付与者がこの最大値よりも高い値をリクエストすると、そのリクエストは失敗します。
注記
一時トークンのリクエストで、ロケーションがオブジェクトの場合は、targetType
リクエスト内のパラメータの値を Object
に設定します。このパラメータは、ロケーションがオブジェクトで、特権レベルが Minimal
の場合にのみ必要です。ロケーションがバケットまたはプレフィックスの場合、このパラメータを指定する必要はありません。
例
AWS Command Line Interface (AWS CLI)、Amazon S3 REST API、AWS SDK を使用して一時的な認証情報をリクエストできます。これらの例を参照してください。
詳細については、「Amazon Simple Storage Service API リファレンス」の「GetDataAccess」を参照してください。
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://
*", "Grantee": { "GranteeType": "IAM", "GranteeIdentifier": "arn:aws:iam::amzn-s3-demo-bucket
/prefixA*111122223333
:role/role-name
" } }
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 を使用して被付与者が一時認証情報をリクエストする方法の例を説明します。