メモ: AWSマイスターシリーズ re:Generate 「AWS Identity and Access Management(IAM)」

次のニュースを見ておぉー!と思い、今日はひさしぶりにAWSのWebinarを視聴しました。

90分もあってびっくりしました。途中から音声が途切れがちで、宇宙との交信というか、ボサノバみたいになってて大変そうでした(講師の片山さん、お疲れ様でした…)。

以下は覚書きメモです。

IAM概要

IAMは、AWSAPIアクセスに対して権限をチェックする仕組みです。

ユーザ名は、128文字までのアルファベット、数字、+=,.@-_の記号が使えます。

オプションでパスを設定可能です。これは検索のフィルタリングに使えます。……IAMグループがあるのに、パスをどんなふうに使えば便利なのかがよく分かっていません。IAMポリシーと直接紐づかない、タグのような位置づけで使うとよいのでしょうか?

IAMにも多要素認証が使えるそうです。物理MFAだけでなく仮想MFAも使えます。(参考: http://aws.amazon.com/jp/mfa/virtual_mfa_applications/

IAMポリシー(本日のメインテーマ)

ポリシーとして許可(あるいは拒否)するActionを指定します。「NotAction」で「〜以外」という否定の指定もできます。

書き方の詳細は公式の資料参照で。

EC2とRDSのリソースレベルのアクセス許可

これは、冒頭で触れた話ですね。

リソースに指定できるAction操作はまだ限定的なので、使う前に要確認です。今後徐々に範囲を広げてくれるそうです。

IAMポリシーの便利な設定例の紹介

(本日のWebinarで、今後一番役に立ちそうと思ったのはこのセクションでした)

EC2リソース用のポリシー変数に、EC2のタグを指定できます。これによって、「指定したタグのついたインスタンスのみ起動/停止可能」という制御が可能になりました(もちろん、同時にEC2へのタグ付けActionは禁止しておかなければいけません、とのこと。そりゃそうですね)。今までは「EC2インスタンスの上げ下げ」というActionベースの指定しかできなかったので、待ってましたという感じです。

また、RDSにもリソースレベルのアクセス許可が出せるようになったので、「MySQLかつmicroで"test"で始まる名前のRDSのみ作成可能」という権限の例が挙げられていました。開発環境の管理に便利そうです。

さらに、サポートと請求画面へのアクセス可否もIAMで設定できるそうです。アカウントを組織で共有している場合や、検証環境をお客さまと共有している場合の運用で使えそうです。

アクセス可否の決定ロジック

グループとユーザのそれぞれにアクセス可否を設定できます。で、どの指定が最終的に有効になるかについて。

デフォルトでDeny < Allow指定 < 明示的にDeny指定 です。

ポリシー適用状態のテスト方法

コマンドラインツールから、--auth-dry-runオプションをつけて実行すると、実際の操作は実行せずに実行可否が確認できます。(最新のコマンドラインツールが必要)

クロスアカウント

IAMポリシーは、AWSアカウントを越えて利用できます。

IAMロール

ユーザではなく、アプリやサービスに付与する認証認可の仕組みです。

IAMロール for EC2

EC2インスタンスにIAMロールを付与することができます。

インスタンス内に置いたアプリから、インスタンス自体の認証情報を取得して、AWSサービスへのリクエストに利用します。

この方法を使うことで、アプリのプログラム内や設定ファイルなどに、AWSのアクセスキーやシークレットキーIDを埋め込む必要がなくなります。

内部的には、事前に作ったIAMロールに対して、STSで認証情報を生成し、EC2のメタ情報に入れる感じ(?)だそうです。

ちょっと気になったのは、インスタンス内からのメタデータの取得にはどんな制約がかかっているかについて。インスタンス内部からのアクセスを装って、外から認証情報を取得されてしまう危険はないのでしょうか? ロール名がバレない限り大丈夫?

クロスアカウント

IAMロールも、AWSアカウントを越えて利用できます。

例に挙げられていた「開発アカウントから本番アカウントの認証情報を得て、本番環境に触る」というケースが便利そうでした。

AWS Security Token Service

LDAP連携などしたい場合に、これを使います。期限つきのトークンを発行してくれる仕組みです。権限がIAMアカウントと入れ子になっているのも便利だと思います。

後半は音声が途切れがちだったこともあり、メモはここまでです。

IAMに関して知らなかった話がたくさん聞けたので、今後役に立ちそうです。特に、設定例の紹介が具体的で良かったです。ありがとうございましたー。