プレイヤーズ・ハイ

 雑多な日記

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 ポリシーバリデーターというのが使える.

リソースベースポリシー

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 つ選ぶ)
  • 詳細は以下

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 で確認

以上