おさらい
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ロールは誰に使わせるかをあらかじめ設定するもの