💨

AWSを触ってみる【IAM】

に公開

はじめに

AWSが提供する学習プラットフォームAWS Skill Builderの学習プランが11/2まで無料で急ぎでやってみたので学んだことをまとめます。
https://aws.amazon.com/jp/blogs/news/begin-your-aws-journey-with-new-free-aws-builder-labs-learning-plan-on-aws-skill-builder/
実際にAWSコンソールを開きながら進められるのでおすすめです。
※自分はAWSを業務で若干しか触ったことないレベルなのでほぼ初心者です。

IAMとは

AWS Identity and Access Management (IAM) は、AWS でユーザーとユーザーのアクセス許可を管理できるサービスです。IAM を使用すると、「誰がどのリソースにアクセスできるか」を一元管理できます。

IAMの4つの要素

IAMを理解する上で重要なのは、以下の4つの要素です。

  • ユーザー
  • グループ
  • ロール
  • ポリシー

ユーザー

一人の利用者に対して、1つのIAMユーザー を発行します。
複数人で同じユーザーを使い回すことは避け、個人ごとにアカウントを分ける のが基本です。
各ユーザーには、必要なアクセス権限を付与するための ポリシーを適用 できます。

グループ

ユーザーグループは IAM ユーザーの集合です。ユーザーの集合に対するアクセス許可を指定するには、グループを使用します。
特定のルールセットをグループ内の全ユーザーに一括して適用することができます。
グループには、(複数の)ポリシーを適用することができます。

10人ユーザーにそれぞれ1人ずつ権限を設定していくのは面倒。
役割ごとにIAMグループを作ってそれぞれのグループに必要な権限設定をして、そのグループにユーザーを所属させて権限を設定したほうが管理しやすい。

管理の流れ例

  1. グループを作成(例:Developers)
  2. グループに許可する権限(ポリシー)を付与
  3. ユーザーをそのグループに追加
    → 追加されたユーザーは自動的に、グループの権限を継承します。

グループは「複数ユーザーにまとめて権限を付与したいとき」に便利な仕組みです。

ロール

IAMロールは、ユーザーやサービスに一時的な権限を与える仕組みです。
IAMユーザーと似ていますが、異なる点は、AWSリソース(EC2、Lambdaなど)に対して、他のAWSリソースを操作する権限を与えられることです。

例:
EC2インスタンスがS3へファイルをアップロードしたい場合
 → EC2にS3アクセス権限を持つIAMロールをアタッチします。
Lambda関数がDynamoDBを操作する場合も同様です。

また、IAMユーザーは特定の個人に固定されていますが、ロールは必要とする任意の人やサービスが引き受けることができる権限のかたまりです。
そのため、普段はアクセス権のないユーザーやアプリケーション、サービスにも、ロールを通して一時的にアクセス権を委譲することができます。

ポリシー

ポリシーは、どのAWSリソースに対して、どんな操作を許可または拒否するかを定義したルールです。
JSON形式で記述され、IAMユーザー、グループ、ロールにアタッチして利用します。

AWSにはあらかじめ多くのポリシーが用意されており、必要に応じて独自のポリシーを作成することもできます。

3種類のポリシー

種類 管理主体 概要
AWS管理ポリシー AWS AWSがあらかじめ用意・管理しているポリシー。代表的な権限セットが揃っており、すぐに利用できる。
カスタマー管理ポリシー ユーザー 組織や要件に合わせてユーザーが独自に作成・管理する再利用可能なポリシー。
インラインポリシー ユーザー 特定のユーザー、グループ、またはロールに直接埋め込むポリシー。個別の制御に利用。

以下はAWSが既に用意しているポリシーの一部です。

ポリシーはJSONで定義することができます。

JSONで定義されたポリシー

IAM ポリシーステートメントの基本構造は以下のとおりです。

  • Effect は、アクセスを許可するか、拒否するかを示す。
  • Action は、AWS のサービスに対して実行できる API コール (例えば、cloudwatch:ListMetrics など) を指定する。
  • Resource は、ポリシールールの対象となるエンティティの範囲を定義する (例えば、特定の Amazon S3 バケットや Amazon EC2 インスタンス、または任意のリソースを意味する * など)。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "ec2:GetSecurityGroupsForVpc"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "elasticloadbalancing:Describe*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:ListMetrics",
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:Describe*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "autoscaling:Describe*",
            "Resource": "*"
        }
    ]
}

IAMを触ってみる

グループにユーザーを追加する

あらかじめ、グループとユーザーは作成されているものとします。

  1. コンソールからIAM>ユーザーグループ>メンバーを追加したいグループを選択

  2. ユーザー>ユーザーを追加

  3. ユーザーを選択>ユーザーを追加

まとめ

ロールがかなりややこしいなと思いました。
引き続き他のサービスも触ってみようと思います!

Discussion