AWS IAM の雑なまとめ
【目次】
IAM の用途
- AWS マネージメントコンソールへのログイン,AWS CLI や AWS SDK, IAM HTTPS API などで使用できる.
IAM の単位
IAM ユーザー
- ユーザー.10 グループまで所属可能.
- 認証情報は,IAM ユーザーごとに API キーを発行するか,OpenSSL などで作成した X.509 Certificate をアップロードして使う.
- API キーはローテーション強制ができる.
IAM グループ
- 単にユーザーをグルーピングしたもの
IAM ロール
- AWS サービスやアプリケーションに対して権限を付与するためのもの.IAM ユーザー|グループとは紐付かない.EC2 のインスタンスプロファイルなど.
IAM ポリシー
ユーザーベースポリシー
IAM ユーザー|グループ|ロールに紐付ける.
AWS 管理ポリシー
- AWS によってあらかじめ用意されたアクセス権群のテンプレートのようなもの.複数の IAM ユーザー|グループ|ロールで共有可能
- ユーザー管理ポリシー
- ユーザーによって独自にカスタマイズ,定義されたポリシー群.複数の IAM ユーザー|グループ|ロールで共有可能
インラインポリシー
- 各 IAM ユーザー|グループ|ロール毎に個別に設定するポリシー.共有不可.
IAM ポリシージェネレーターを使用して書き出させるのが簡単で確実
- IAM ポリシージェネレーター内で 5 バージョンの管理が可能
- ポリシーのテストには IAM ポリシーシミュレーターというのが使える.
- 既存ポリシーのチェックには IAM ポリシーバリデーターというのが使える.
リソースベースポリシー
- S3 のバケットポリシーなどに紐付ける.他には VPC, Lambda, Glacier, KMS, OpsWorks など.他多数.
- AWS Black Belt Techシリーズ AWS IAM http://www.slideshare.net/AmazonWebServicesJapan/20150617-aws-blackbeltiam 33 ページ
- IAM と連携する AWS サービス - AWS Identity and Access Management http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html
IAM ロールの信頼ポリシー
- ある IAM ロールに付けた権限を他の主体 (Principal) に移譲する.
- ( ≒ Principal が,ある IAM ユーザーになりすます.権限を引き受ける(AssumeRole))
ID フェデレーション
AD ユーザー ( ≒ ID プロバイダー, SAML 2.0 or OpenID Connect (Google, Facebook, Amazon などのアカウントが対応している.また Amazon Cognito とも連携可能) と互換性のあるもの) などに IAM 権限を移譲する.
- AWS STS (Security Token Service, IAM のサブプロダクト) を使用.具体的には AssumeRole, GetFederationToken.
- Temporary Security Credentials
identity provider カラムで ID プロバイダーを設定し,ある IAM ロールを AssumeRole する.
一時的セキュリティ認証情報
IAM ロールを使ったクロスアカウントアクセスなど
アカウント (IAM ユーザー) 側
- どの IAM ロール (リソースに紐付いた IAM ロールなど) を移譲されるかを定義
- リソース側
- 誰 (Principal) がどのリソースにどんな権限を持つことができるか定義
Temporary Security Credentials
- 以下の 3 つをユーザーに与え,期限付きの認証情報を与える.一時的な IAM AssumeRole と考えてもよい.GetSessionToken(自分自身の IAM ユーザー権限を一時的に利用), GetFederationToken はこの仕組を利用する.
- アクセスキー ID
- シークレットアクセスキー
- セキュリティトークン
- 権限を与える時間帯
- IAM ユーザー
- 最小 15 分 〜 最大 36 時間 (デフォルト 12 時間.時間帯はプリセットのものから 1 つ選ぶ)
- AWS アカウント
- 最小 15 分 〜 最大 1 時間 (デフォルト 1 時間.時間帯はプリセットのものから 1 つ選ぶ)
- IAM ユーザー
- 詳細は以下
- AWS Black Belt Techシリーズ AWS IAM http://www.slideshare.net/AmazonWebServicesJapan/20150617-aws-blackbeltiam 53 ページ
Temporary Security Credentials のまとめ
種別 | 説明 | 権限 |
---|---|---|
GetSessionToken | 自身の権限で一時認証 | 自身の権限 クロスアカウント不可 MFA 利用可 |
GetFederationToken | 信頼ユーザーで一時認証 | 自身の権限内で規定 クロスアカウント不可 MFA 利用不可 |
AssumeRole | IAM ロールとマッピング | IAM ロールで規定 クロスアカウント可 MFA 利用可 |
www.slideshare.net
その他
STS は基本的にグローバルサービス (https://sts/amazonaws.com) だが,IAM の Account Settings にて各リージョンで STS の機能をアクティベート可能(->レイテンシーの低減などの効果).同時に AWS CloudTrail も忘れずにアクティベートすること.
Switch Role
- AWS マネージメントコンソールにて,ある IAM ユーザーから,クロスアカウントアクセス用 IAM ロールにスイッチできる.
- 必要なときに IAM ユーザーの権限を昇格とかに使える.
- IAM ユーザー側には読み取り権限のみ
- IAM ロール側には更新権限も
変更の反映にまれに遅延が発生することがある,らしい.
コンフィグ類の書き方
- ~/.aws/config
[default] region = ap-northeast-1 [profile foo] region = us-east-1
- ~/.aws/credentials
[default] [foo] aws_access_key_id = A******************* aws_secret_access_key = x***************************************
$ aws configure list
で確認
以上