【AWS入門⑤】IAMを使って権限管理&セキュリティ強化

6 min read

はじめに

Webサービスに関するインフラの知識不足の解消&クラウドサービスの世界シェア1位であるAWSの学習のため、YouTubeでAWSの学習動画やエンジニアに関する情報を提供している「くろかわこうへい」さんが開催する AWS CloudTech に参加しました。
学習を進める上で習得した技術情報を記載します。

気になる方は以下を参照してください。

注意点

基本的にAWSに関する内容を記載していきます。
ネットワークの基礎的な用語や少し専門的な用語は説明することもあるかもしれませんが、自分が必要と思った際にのみ記載します。
※気になったら調べてみましょう!

IAM(AWS Identity and Access Management )

AWSの権限管理サービスのことです。

IAMユーザーについてはこちらでも少し触れていますので参照してみてください↓
【AWS入門②】IAMユーザーと仮想 MFA デバイスの設定

IAMに関して以下の点を知っておけば(知っておくべき)AWSでの権限管理をスムーズに行えます。AWSを使っての運用において重要な点になるかと思います。

  • ユーザー
  • アクセスキー
  • IAMグループ
  • IAMポリシー
  • IAMロール

IAMユーザー

ルートユーザーでも環境構築などAWSのサービスを使用することはできます。
しかしAWSのベストプラクティスとしてルートユーザーでサービスを実際に操作することは推奨されていません。
ルートユーザーと同等の権限を持たせたユーザーや、AWSのサービスを利用する権限を設定したユーザーを作成して運用します。

そのユーザーをIMAユーザーと呼びます。

会社やチームの運用方法によりますが、ユーザーが人間である必要はありません。
「1人のユーザー」「1つのグループ」「1つのプロジェクト」など運用に沿ってIAMユーザーを作成すると良いでしょう。

IAMユーザーへの認証情報

IAMユーザーを作成で以下のアクセスを設定します。

プログラムによるアクセス

以下の2種類が発行されます。

  • アクセスキーID
  • シークレットアクセスキー

両方ともランダムな文字列ですが、このキー情報があればどこからでもAWSが操作できてしまいます。
AWS CLIというAWSのコマンドラインツールを使用すれば、コマンドを使用してAWSに対して様々な操作ができるようになります。
AWS CLIを使用する際に、アクセスキーを設定できるのでPCからAWSに該当するIAMユーザーで操作できます。

※AWS CLIに関しては別の記事にて詳しく解説します。

AWSマネジメントコンソールへのアクセス

IAMユーザーでログインする場合は

  • アカウントID(12桁)またはアカウントエイリアス
  • ユーザー名
  • パスワード
    が必要になります。

ログイン後、マネジメントコンソールでAWSを操作できるようになります。

IAMグループ

IAMグループは複数のIAMユーザーの集合体になります。
グループを使用することで複数のIAMユーザーに対して同時にアクセス許可を設定できたりと容易に管理ができるようになります。

以下の画像はAWS公式ドキュメントより

IAMポリシー

AWSで操作できる権限を表したものになります。
設定ファイルはJSON形式のドキュメントになっています。

ユーザー作成時に以下のようにアクセス許可を設定できます。

この際に選択したAmazonEC2FullAccessの詳細としては以下のようになっています。

JSON形式で記載されているのが以下です。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "ec2:*",
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "elasticloadbalancing:*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "cloudwatch:*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "autoscaling:*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:AWSServiceName": [
                        "autoscaling.amazonaws.com",
                        "ec2scheduled.amazonaws.com",
                        "elasticloadbalancing.amazonaws.com",
                        "spot.amazonaws.com",
                        "spotfleet.amazonaws.com",
                        "transitgateway.amazonaws.com"
                    ]
                }
            }
        }
    ]
}

内容としてはEC2に対してすべての権限を許可することが記載されています。
中にはEC2以外に「elasticloadbalancing」「cloudwatch」等のアクセス許可も記載されています。
これはEC2を操作することへのフル権限になるので他のEC2の操作に関連するサービスも記載されています。

複数のアクセス許可をポリシーとして登録し、IAMユーザーやIAMグループにアタッチすることでユーザーの権限を設定できます。

IAMポリシーの種類

  • AWS管理ポリシー
    AWSが用意しているポリシーです。
  • カスタマー管理ポリシー
    AWS管理ポリシーより詳細に設定できるカスタマイズ可能なポリシーです。実際にJSONを記述して設定します。

IAMロール

IAMポリシーを複数まとめて権限をひとまとまりにしたものです。
IAMユーザーにポリシーを付与することはできますが、推奨された方法ではありません。
そのためIAMロールを作成し、IAMユーザーに付与して運用します。

IAM関連の用語について

AWSでは上で取り扱ってきた「ユーザー」「ロール」などをまとめた用語があり、紛らわしい部分もあるのでここで解説します。

公式サイトにはこのような図も載っています。

リソース

IAMで管理されているユーザー、グループ、ロール、ポリシー、および ID プロバイダーのことです。IAMで登録、編集、削除ができるものと覚えておきましょう。

マネジメントコンソールでIAMを選択すると左側のアクセス管理に表示されます。

ID(アイデンティティ)

ユーザー、グループ、ロールなどIAMポリシーを割り当てる対象のことです。

エンティティ

AWSによって認証されるIAMリソースオブジェクトのことです。

※フェデレーテッドユーザー:Googleアカウントなどを用いてAWSを使用するユーザーのこと

プリンシパル

AWSにサインインし、AWSに対してリクエストを作成するもののことです。
ユーザーなど人間でもあり、アプリケーションのことでもあり、AWSのサービスのことでもあります。

まとめ

AWSのEC2などのサービスを使うことに注目しがちですが、AWSの運用面やセキュリティ面を考えるのであればIAMは避けては通れないサービスになります。
AWSの認定試験などでも上記の用語は出るので試験対策としても意味や役割を覚えておく必要はあります。

前回の記事

【AWS入門④】EC2の構築における基礎の基礎

次回の記事

⇒作成中