IAMでできること
・IDと認証情報の管理
・アクセス権限の管理
・権限の委任
・IDとライフサイクル管理
など、AWSリソースにアクセスする仕組み。
AWSリソースにアクションをする場合、ユーザーだけではなくアプリケーションだったりします。
AWSではユーザーやアプリケーション、ロールなどアクションの指示を出す役割をまとめてプリシンパルと言います。
プリシンパルがリクエストを出す場合、IAMユーザ、ロールが認証されている必要があります。
プリシンパルはマネジメントコンソールであったり、AWSAPIを使用してリクエストを送信します。
リクエストには誰が?どの環境に?どんなことをしたいのか?の情報が入っています。
これらの情報をもとにリクエストを許可するのかしないのかをアクセス許可のポリシーによって決められており、これらが認可されて初めてリソースが使用できます。
AWSアカウントのルートユーザー
全てのAWSサービスとリソースを全てに完全なアクセス権を持つユーザーのことを指します。支払いオプションの変更、サポートプランの変更、IAMユーザーへのアクセス許可のリストアや無効な制約を設定したS3バケットポリシーの修正などができます。
(他にもあるが割愛)
IAMユーザーの作成
AWSで作成するエンティティ(ユーザーまたはアプリケーション)名前と認証情報で構成されています。
IAMユーザーを識別する方法として、、
・「フレンドリ名」:ユーザー作成時に指定。
“Alice”と“Alice”は同一のユーザーと見なされて、作成しようとするとエラーが出ます。
・ユーザーのARN:リソースポリシーのプリシンパル要素で指定します。
認証情報として使用しているのは、、
・マネジメントコンソールで使用しているパスワード
・プログラムからアクセスするときに使用するアクセスキー
これらから必要な認証情報を作ることができる。(選べる)
ユーザーとグループの作成について
I新しいグループの作成しポリシーを紐付ける。その次にユーザーを作成しアクセスの種類を選択する。
コンソールのパスワードを自動生成パスワードにするかカスタムパスワードに設定するかを選択することができる。ユーザーを作成し終えたらグループに追加をすることができる。
IAMロール
AWSサービスやアプリケーションなどのエンティティに対してAWSリソースの操作権限を付与する仕組みのことを指します。
IAMロールによる認証情報はAWSが自動的にローテーションすることができます。SDKによって認証情報取得と有効期限切れ前の再取得を自動的に実施可能です。
別のAWSアカウントのユーザーが認証状を共有せずに自分のAWSアカウントのリソースにアクセスを制御可能にします。
ユーザーやグループには紐付いていません。
ユーザーまたはアプリケーションがロールを一時的に引き受けることで別のAWSアカウントのユーザーで引き受けることが可能です。
例えば、EC2からS3にアクセスしたい場合には、EC2にIAMロールを使ってS3にアクセスできる設定の場合、
裏でSTSが働いていて一時的にアクセスキーとシークレットキーを発行してます。S3へのアクセスが終わったら自動的に削除されるのでアクセスキーとシークレットキーは管理する必要がありません。
IAMロールとポリシーの作成
例として、EC2からS3のバケット一覧を取得するようにする設定の場合、ロールを作成してEC2にアタッチをする設定をする必要があります。
まずはロールの作成から。このロールを使用するサービスを選択の画面からEC2を選択します。
次の画面でアクセス権限はS3フルアクセスをチェックして次の画面へ(これは操作する権限、ポリシーをアタッチしたという意味になる。)
信頼関係とポリシーを紐づけて操作をできるようにするイメージ。
ロールの基本。どのAWSリソースこのロールを使えるのか?=信頼されたエンティティ
どのサービスに対してどんなアクションを実行できるのか?=ポリシー
その次にインスタンスにアタッチする必要があるので操作したいインスタンスにチェックを入れます。
アクションのボタンをクリックしインスタンスの設定のボタンをクリック→「IAMロールの割り当て/置換」のボタンをクリック→先ほど作成したロールをアタッチします。
●IAMポリシー
アクセス許可を定義するルールみたいなもの。
・どのリソースに対して?
・どのような操作を?
・許可する、しない
以上を定義します。
●IAMグループ
一人一人のユーザーのポリシーを変更するのは面倒なので
グループにポリシーをつけて、グループにユーザを所属させておけば
ポリシーの変更は一回で済みます。
STSとは?
一時的なセキュリティ認証情報のことを指す。
有効期限つきのアクセスキーID /シークレットアクセスキー/セキュリティトークンで構成されている
認証情報を取得する際に期限を設定できる。
トークンのタイプにより有効期限は様々、発行した認証情報の期限は変更不可である。
STSエンドポイントは全リージョンで使用可能であり、デフォルトではグローバルサービスとして利用している。
AssumeRoleとは?
既存のIAMユーザーの認証情報を用いて、IAMロールのtemporary security credentialsを取得するためのアクション。