おはようございます、YASUです。
DVAの勉強で、S3の「署名付きURL」が何度も出てきました。「ファイルを一時的に、特定の人にだけ渡す仕組み」という説明は見かけますが、有効期限の決まり方が分かりにくかったので、シンプルに整理しました。
目次
結論
署名付きURLは、S3のオブジェクトに、期限付きでアクセスできるURLです。作った人の権限で動き、有効期限は、URLに指定した時間か、作成に使った認証情報の期限の、短い方になります。
署名付きURLとは
S3のバケットは、デフォルトでは、公開されていません。署名付きURLを使うと、バケットを公開しなくても、AWSの認証情報を持たない人が、指定したオブジェクトを、ダウンロードやアップロードできます。自分なりのイメージでは、「期限付きの入室券」です。
誰の権限で動くのか
- 署名付きURLは、作った人の権限で動く。そのオペレーションを実行する許可を持つ人が作る必要がある
- 作成に使った認証情報が、取り消されたり、削除されたり、非アクティブ化されたりすると、URLも期限切れになる
有効期限は、認証情報で変わる
- IAMユーザーの認証情報で作る:最大7日間まで有効にできる
- 一時的な認証情報(IAMロールなど)で作る:その認証情報の期限が切れると、URLも期限切れになる。URLに長い有効期限を指定していても、同じ
- S3コンソールで作る:有効期限は、1分から12時間まで
前に整理したIAMロールの一時的な認証情報には、期限がありました。そのため、ロールで署名付きURLを作ると、URLの期限も、ロールのセッションが切れるまでになります。
注意点
署名付きURLは、URLを知っている人なら誰でも使えます。そのため、有効期限は必要な分だけにして、権限も、必要最小限にしておくのが、ベストプラクティスとされています。
試験での見分け方
- 「バケットを公開せずに、一時的にファイルを共有したい」→ 署名付きURL
- 「ユーザーに、AWSの認証情報を渡さずに、S3へアップロードさせたい」→ 署名付きURL
- 「URLの期限が、指定より早く切れた」→ 作成に使った一時的な認証情報の期限を疑う
まとめ
- 署名付きURLは、バケットを公開せずに、期限付きでオブジェクトへアクセスさせる仕組み
- 作った人の権限で動き、その認証情報が無効になると、URLも使えなくなる
- IAMユーザーなら最大7日間。一時的な認証情報なら、その期限まで
- URLを知っている人は誰でも使えるので、期限と権限は、必要最小限にする
「作った人の権限で、認証情報の期限まで」という点を押さえると、署名付きURLの動き方が、すっきりしました。それでは、また明日!

コメント