【AWS入門】IAMについて

AWS Identity and Access Management(IAM)とは

IAMは、AWSのユーザーのアクセス管理で活用されるツールのことを指します。

IAMの要素として、「ユーザー」「グループ」「ポリシー」「ロール」の4つ。

ユーザー

ユーザーはAWSを操作することのできるIAMユーザーのことを指し、ルートユーザーとは別ものです。

基本的には独自に作成したIAMユーザーを使用します。IAMユーザーを作成した初期の状態では、どのアクセス権限ももっていない状態なので、別途ポリシーの付与が必要です。

また、ルートユーザーを使用するときは、以下のような設定をしたいときのみ使用します。

  • AWSルートアカウントのメールアドレスやパスワードの変更
  • IAMユーザーの課金情報へのアクセスに関するactivate/deactivate
  • 他のAWSアカウントへのRoute53のドメイン登録の移行
  • AWSサービス(サポート等)のキャンセル
  • AWSアカウントの停止
  • 一括請求の設定

グループ

AWSではユーザーをグループ単位で設定することができます。

ポリシー

ユーザーにアクセス権限を付与するための設定(ドキュメント)のことを指します。例えば、このグループはEC2に入れますよ〜。S3に入れませんよ〜みたいな感じ。IAMは基本JSON形式で設定します。

ポリシーは、「インラインポリシー」と「管理ポリシー」に2つ存在します。

インラインポリシー

「ポリシー」単体では存在できず、プリンシバルエンティティ(ユーザー、グループ、ロール)と1対1の関係にあるもの。つまり、1つのポリシーを1つのエンティティごとに設定していかないといけず、非常に面倒です。

管理ポリシー

「ポリシー」単体として存在できて、複数のプリンシバルエンティティにつけたり外したりできます。つまり、1つのポリシーを複数のエンティティに同時に設定ができます。普段はこちらを使用していくのがいいです。

また管理ポリシーは「AWS管理ポリシー」と「カスタマーポリシー」の2つに分かれています。

AWS管理ポリシー

→予めAWSによって用意されている管理ポリシー

カスタマーポリシー

→利用者が独自に作成する管理ポリシー。業務ではこちらがよく使われると思います。

ただこの2つはどちらが推奨とかはなく、どこまで細かく設定したいかによって使い分けます。

AWS管理ポリシーは大まかにざっくりとした権限の付与ができ、例えばEC2全てに対してなんでも操作可能、S3バケットのすべてに対して読み取りだけ可能といった設定ができます。
これを例えば特定のタグがついたEC2に対して起動停止だけ可能、特定のS3バケットに対してPUTのみ可能といった細かい設定をしたいときはカスタマーポリシーを使用します。

まとめると、、、、

基本インラインポリシーは使用せず、細かい設定をしたいのであれば、カスタマーポリシーを使用するのがいいかと思います。

ロール

AWSのリソースに付与するもので、ポリシーをグルーピングしたもの。権限の付与はロールを付与して、その中に設定したポリシーが含まれているイメージです。

ポリシーとロールについて、以下の記事が非常にわかりやすかったです。

https://qiita.com/montama/items/90bb8a3973d101be4690

AWS Organization

IAMのアクセス管理を大きな組織でも楽に実施できるようにするサービスのこと。マスターアカウントの下に組織単位(OU)がグループ、その中にメンバーアカウントが紐づきます。機能としては、「請求だけ一括にする」「すべての機能を使う」の2つから選択します。基本「請求だけ一括にする」のほうが使い勝手が良さそうです。

たとえば、

  • 複数アカウントの一元管理
  • 新規アカウント作成の自動化
  • 請求アカウントの一括化

ができるようになります。

Organizationの権限設定

SCP(Service Control Policy)でOU(組織)に対して権限を設定します。

SCPは権限を与えるものではなく、「ここまでは許可できる」という境界を設定するものです。IAMで使える権限が設定されていないとそもそも使えず、AWS アカウント内で関連付けられている IAM ポリシーを置き換えるものではないため注意が必要です。

なので、権限の設定はIAMで個別に行う必要があります。

認証方式

認証方式は以下の4つ。

  • アクセスキー/シークレットアクセスキー
  • X.509 cerfificate
  • AWSマネジメントコンソールへのログインパス
  • MFA(多要素認証)

ユーザーのログ確認方法

IAMユーザーの行動ログを確認する方法は以下の5つ。

  • アクセスアナライザー:セキュリティ上のリスクのあるリソースや意図しないアクセスを検知する
  • Access AdvisorのService Last Access Data:IAMエンティティが最後にアクセスしたサービスの日付と時刻を表示
  • Credential Report:利用日時などが記録されたIAM認証情報のレポート
  • Config:変更履歴や構成変更のログ確認
  • CloudTrail:ユーザーの行動ログを確認

ベストプラクティス

  • ルートユーザーはアクセスキーをロックして使用しない
  • IAMユーザーで管理する
  • IAMグループを利用する
  • 権限付与は最小に
  • 新しくポリシーは作らず、管理ポリシーを使用する
  • インラインポリシーではなく、カスタマー管理ポリシーを使用する
  • IAMアクセス許可を確認する
  • 強度の高いパスワードポリシーを設定する
  • MFA(多要素認証)を有効化する
  • EC2インスタンスで実行するアプリケーションにはIAMロールを使用する(STS認証=一時的なアクセス許可)
  • 第三者に一時的に認証を付与する場合はIAMロールを使用してアクセス許可を移譲する
  • アクセスキーは共有しない
  • 認証情報を定期的に更新する
  • 不要な認証情報はすぐに消す
  • アカウントのアクティビティを常時監視する

ABOUTこの記事をかいた人

株式会社メンバーズ データアドベンチャー所属 データエンジニアとしてデータ基盤の構築から運用を行っております。 得意なことは、データ活用推進です。 日々の学びをアウトプットしていきます。