AWS

AWS STS Assume Role

おさらい

STSは

  • AWSリソースへのアクセスを制御する一時的なセキュリティ認証
  • IAMアクセスキー相当の機能をIAMユーザー以外にも提供できる
  • IAMユーザーに紐付いている1ユーザーふたつまで作れる
  • IAMユーザーが増えるとリスクが増える。IAMユーザーを追加せず(または権限を付けず)にSTS経由で一時的にIAM相当の権限を付け、AWSリソースにアクセスするのが安全

IAMユーザーとは

  • 外部の利用者、外部のリソースに対して権限を渡すために存在している。

IAMロールとは

  • AWS内部でAWSのリソースが他のAWSリソースを操作するために使うもの。
  • AWSリソースにはIAMユーザーも含まれる。
  • ロールの引き受けをする、引き受け側のこと。
  • 引き受ける側にはIAMユーザーやAWSリソースがある
  • 権限のかぶりかえができる。

Assume Roleは

  • IAMロールの裏側ではAssumeRoleが使われている

STSの主な機能

認証情報取得
GetAccessKeyInfo
  • AWSID取得
  • IAMユーザー、IAMロールで利用可能
  • ReadOnlyAccessポリシー利用化
GetCallerIdentity
  • 実行権限のAWSIDやIAMエンティティ(IAMユーザー、IAMロール)情報取得
  • IAMユーザー、IAMロールで利用可能
  • ReadOnlyAccessポリシー利用可能
暗号化エラーメッセージの複合
DecodeAuthorizationMessage
  • EC2などの暗号化されたエラーメッセージを複合する
  • IAMユーザーのみ利用可能
  • ReadOnlyAccessポリシーは使えないのでカスタムポリシーが必要
トークン発行
GetSessionToken
  • そのIAMユーザーと同じ権限のトークンを発行
  • IAMユーザーのみ利用可能
  • IAMを操作するにはMFAが必須
  • ReadOnlyAccessポリシー利用可能
GetFederationToken
  • そのIAMユーザーの権限内の一時的なユーザーを作成してトークンを発行する
  • IAMユーザーのみ利用可能
  • CLIやSDKでは利用不可(発行だけはできるらしい)
  • ReadOnlyAccessポリシーは使えないのでカスタムポリシーが必要
AssumeRole
  • PrincipalになっているIAMロールの権限を取得するトークンを発行する
  • IAMユーザー、IAMロールで利用可能
  • ReadOnlyAccessポリシーは使えないのでカスタムポリシーが必要

Roleの引き受け

  • ロールは必ず Principal を指定しなければならない
  • 信頼ポリシードキュメントを作り信頼ポリシードキュメント(IAMロールの作成に必要なJOSNファイル。見た目はIAMポリシーと似ている)を組み込む感じでIAMロールを作る
  • Roleを引き受けられるひとは Principal のみ
    • Lambdaに使わせたいIAMロールなら、引き受けできる Principal は Lambda になる
  • AWSアカウントにも Principal を渡すことができる
    • Organizationsの親から子に対してアカウント単位で Principal できる(?)
  • IAMロールは誰に使わせるかをあらかじめ設定するもの

-AWS