[AWS] IAMのロール、ポリシー、ユーザーの違いをまとめてみました

2023/06/01

AWS
IAM

はじめに

[AWS] IAMのロール、ポリシー、ユーザーの違いをまとめてみました。

IAM(Identity and Access Management)

IAM(Identity and Access Management)とは、「誰」が「何(AWSリソース)」に対して「どのような操作ができるか」を定義する、「認証」「認可」の仕組みを提供するサービスです。

IAMには、IAM User、IAM Policy、IAM Roleの概念があります。

それぞれの関わりを示した図が以下になります。

001.png

IAM User

「誰」が「何(AWSリソース)」に対して「どのような操作ができるか」

の「誰」に該当するのがIAM Userです。

IAM Policyを紐づけることでAWS利用者ができることを定義します。

初期状態では存在せず、root User(AWSアカウント)でログイン後に作成します。

AWSアカウントは非常に強力な権限を持っているため、必ずIAM Userを作成して利用しましょう。

IAM User自体は、プログラムからIAM UserとしてAWSを操作するためのアクセスキーやGitリポジトリサービスで使用するSSHキーなどの情報を保持しています。

IAM Policy

「誰」が「何(AWSリソース)」に対して「どのような操作ができるか」

の「どのような操作ができるか」に該当するのがIAM Policyです。

IAM Policy単体では何もできず、IAM UserやIAM Roleに紐づけて使用します。

Resource(どのAWSリソースに対して)、Action(どのAWSサービスのどの操作を)、Effect(許可または拒否)の3つの要素で定義します。

例えば「S3バケット(My-S3-Bucket)に対して特定のIPアドレス(192.168.10.1/24)からのみ書き込み・読み込みを許可する」IAM Policyを作成し、IAM Userにアタッチすることで対象のユーザーは、IPアドレス「192.168.10.1/24」からS3バケット「My-S3-Bucket」のオブジェクトを取得・削除することができます。

上記ポリシーをJSON形式で表記すると以下のようになります。

{
    "Sid":"xxxxx",
    "Effect":"Allow",
    "Action":[
        "s3.GetObject",
        "s3.PutObject"
    ],
    "Resource":"arn:aws:s3:::My-S3-Bucket/*",
    "Conditon":{
        "IpAddress":{
            "aws:SourceIp":"192.168.10.1/24"
        }
    }
}
  • Sid(任意):ドキュメント内で一意の識別子
  • Effect:Actionに対するAllow(許可)またはDeny(拒否)
  • Action:AWSリソースに対する操作
  • Resource:Actionの対象とするAWSリソース
  • Condition(任意):適用する条件

IAM Role

「誰」が「何(AWSリソース)」に対して「どのような操作ができるか」

の「誰」に該当するのがIAM Roleです。

IAM Userとの違いは「誰」の範囲が非常に広いことです。

IAM Userでは「誰」が必ずユーザーでしたが、IAM RoleではAWSサービスだったり、別のAWSアカウントだったりします。

IAM Policyに紐づけて使用するところは同じです。

002.png


今回はここまでです。