AWS IAMとは
AWS IAMとは「Identity Access Manegement(IDとアクセス管理)」の略でAWSの認証機能のこと。
AWSアカウントは契約を管理するアカウントであるのに対し、
IAMは各種サービスへのアクセルを管理する機能。
人に対して与えるIAMはIAMユーザーという。
一方、サービスやプログラムに与えるIAMをIAMロールという。
IAM自体は追加料金なしで利用でき、作成したユーザーが使用したAWSサービスに課金がさせる。なお、ユーザー認証に、MFA(Muti-Factor Authentication)の使用を推奨している。
IAMグループとIAMポリシー
IAMユーザー・IAMロールともに、必要最低限の機能をつけて、必要な人に渡すのが基本。あらかじめたくさんの機能や権限をつけて渡すのはセキュリティ的に良くない。また、何かがあったときに誰が行ったかわからなくなるので、ひとつのアカウントを複数の人が使い回すのも良くない。
一方で、AWSでは複数のEC2インスタンスやS3バケットを扱うことがよくある。
そのような状況で、ひとりひとりに権限を設定していくのは大変。
そのため、ユーザーやロールの設定を効率的に管理する仕組みが用意されている。
ユーザーはIAMグループとして、グループにまとめられる。グループ化しておくと、同じ権限を与えたいユーザーを一括管理できる。
IAMポリシーは**実行者(ユーザー・ロール・グループ)がどのサービスにアクセスできるのかを決まりごとに設定する機能。**個別に設定するのではなく、ポリシーで適応する形に設定する。
権限の設定を変えたい時は、ポリシーを変更・付け替えするだけで、結びつく全てのユーザーやロールの設定を変更できる。ポリシーは1実行者に対しても設定でき、1つのポリシーを複数のユーザーやロールに設定できる。
IAMポリシーで設定すること
IAMポリシーは何に対して(Amazon EC2サーバーやAmazon S3のフォルダなど)、どのような作業(起動や停止、ファイルの書き込みや読み込み、削除)を、許可するかしないかを設定する。
アイデンディティベースのポリシー
実行者(ユーザー、ロール、グループ)が「何をできるのか」の形で設定
リソースベースのポリシー
操作される側(サーバーやフォルダ)に対し、「何を許可するか」の形で設定
ex)S3の場合、「読み込み」「追加」「上書き」「削除」などの細かい設定に加え、特定の場所(IPアドレス)からだけ許可することもできる
IAMポリシーはオリジナルのものを作成することもできる(カスタマーポリシー)。
しかし、決める項目が多く、設定ミスが起きやすいので、すでに用意されたAWS管理ポリシーを使う。
※アイデンティティポリシーとリソースポリシーでは設定できる内容が若干異なる。
設定する主な項目
項目 | 内容 |
---|---|
Statement | 設定値。Effectや対象などを記録する |
Sid | ポリシードキュメントに与える任意の識別子 |
Effect | 有効にするかどうか |
Action | 許可または拒否される特定の操作 |
NotAction | 指定されたアクションリスト以外の全てを明示的に照合 |
Resource | 操作する対象 |
NotResource | 指定されたリソースリスト以外の全てを明示的に照合 |
Condition | ポリシーを実行するタイミングの条件 |
余談
多段階認証・多要素認証
IAMでは多段階認証と多要素認証を導入できる。パスワードだけでなく、専用のハードウェアを使って生体認証を使うなど、別の種類の認証を用意する。
AWSでは、IDやパスワードの他に、MFA(Multi-Factor Authentication)デバイスを使う。MFAデバイスには専用のハードウェアを使うケースもありますが、手軽なのは、iPhoneやAndroidのアプリを使う方法。アプリを起動すると、画面に一定時間ごとに変わる数字が表示され、ログイン時に入力して認証する。
多段階認証
種類は問わず2回以上認証する
多要素認証
2種類以上の認証を使う