AWS Identity and Access Management
# AWS Identity and Access Management
https://d1.awsstatic.com/webinars/jp/pdf/services/20190129_AWS-BlackBelt_IAM_Part1.pdf
https://d1.awsstatic.com/webinars/jp/pdf/services/20190130_AWS-BlackBelt_IAM_Part2.pdf
## IAM とは
- AWS リソースをセキュアに操作するために、認証・認可の仕組みを提供するマネージドサービス
- ID と認証情報の管理
- ルートユーザーを極力利用しない
- 個々のIAMユーザーを作成
- ユーザーの強力なパスワードポリシーを設定
- アクセスキーを共有しない
- コード内にハードコードしてしまったり、ドキュメントに記載するのはNG
- 特権ユーザーに対してMFAを有効化する
- アクセス権限の管理
- AWS管理ポリシーを使用したアクセス許可の使用
- インラインポリシーではなく、カスタマー管理ポリシーを使用
- 追加セキュリティに対するポリシー条件を使用
- Principal 要素(AWSリソースへのアクセスが許可or拒否されるIAMエンティティを指定する)
- Action 要素
- Condition 要素
- 要素はAND または OR条件
- アクセス可否のロジック
- 明示的なDeny > 明示的なAllow > 暗黙的なDeny
- 最小権限
- グループにIAMユーザーを割り当てる
- IAM グループにIAMユーザーを集合させて管理する
- 権限の委任
- インスタンスプロファイルを利用する
- IAMロール
- IAM ユーザやグループには紐づかない
- ユーザーまたはアプリケーションがロールを一時的に引き受けることで関連づけられたアクセス許可を受けることができる
- 一時的なセキュリティ認証情報
- 有効期限つきのアクセスキー・シークレットキー・セキュリティトークン
- ユーザーのリクエストによってAWS Security Token Service(STS) が動的に作成
- STS で利用できるAPI
- ロールを利用したアクセス許可の委任
- IDと権限のライフサイクル管理
- AWSアカウントのアクティビティの監視
- CloudTrail による監視
- アクセスレベルでIAM権限を確認
- アクセスレベルの分類
- List
- Read
- Write
- Permissions management
- Service Last Accessed Data を利用して与えられた権限で利用されていないものを発見
- 不要な認証情報の削除
- 不要なIAMユーザー
- コンソールを利用しないIAMユーザのパスワード
- 認証情報を定期的にローテーションする
- 認証情報の利用状況はCredential Report 機能で確認可能
- IAMユーザのパスワードローテーション
- アクセスキーのローテーション
## 雑感
AWS を利用する上では絶対に機能を知っていないといけないサービスであるIAMの話。
一番気になったのはSAMLを利用したIDフェデレーション。IAMユーザを都度作成するのはすごい手間なのでGoogle の認証情報を利用できるとすごい便利だなと思った。
Switch Role はよく利用している機能でベストプラクティスに則った設計なんだなと改めて感じた。
IAMのベストプラクティスに則ることが大抵の場合良い結果につながると思うので自分の見える範囲で運用を再確認してみようと思う。