1. ホーム
  2. 記事一覧
  3. IAMエンティティを理解する ユーザー・グループ・ロールの基本

2023.10.30

IAMエンティティを理解する ユーザー・グループ・ロールの基本

この記事の目的

この記事は、AWSのIAMサービスの基本的な概念と使用方法を初心者の方に分かりやすく解説し、安全かつ効果的なAWSリソースの管理の第一歩としてIAMの重要性を理解してもらうことを目的としています。

IAMとは何か?

IAM (Identity and Access Management) は、AWSのサービスの中で、ユーザーやアプリケーションがAWSリソースにどのようなアクセスを持つかを管理・制御するサービスです。

なぜIAMが重要なのか?

AWSを使用する上で、誰がどのリソースにどのようなアクセスを持つかを明確に管理することは、セキュリティの観点から非常に重要です。IAMを適切に設定することで、不要なアクセスを制限し、リソースのセキュリティを向上させることができます。

IAMエンティティを理解することの意義

IAMエンティティ、つまりユーザー、グループ、ロールなどの概念を理解することは、AWSのセキュリティ設定の基盤となります。これらのエンティティがどのように連携し、アクセス制御を実現するのかを把握することで、より適切なアクセス権限の設定や管理が可能となります。本記事を通じてIAMエンティティの基本的な知識を習得し、AWS環境でのセキュリティ対策を理解していきましょう。

IAMエンティティの基本

エンティティとは実体を意味し、データベースやシステムにおいて、個別に識別可能な要素やオブジェクトを表す概念です。IAMエンティティは、AWSリソースへのアクセスを許可するAWSのIDとアクセス許可管理サービスです。IAMエンティティとは、AWSリソースへのアクセスを制御するためのものです。

ユーザー

IAMユーザーは、AWSリソースにアクセスする個人やサービスです。ユーザーは、コンソールへのログイン認証情報やAPIのアクセスキーを持つことができ、これによってAWSのリソースへのアクセスが許可されます。

グループの役割

IAMグループは、複数のIAMユーザーをまとめるためのコンテナです。グループ自体には認証情報は存在せず、主にアクセスポリシーの適用という形での役割があります。特定のアクセスポリシーをグループに割り当てることで、そのグループに所属する全ユーザーに同じ権限が一括で適用されるため、ユーザー管理が効率的に行えます。

ロールの利点

IAMロールは、特定の状況やタスクでAWSリソースに一時的にアクセスする必要がある場合に使用される特別なエンティティです。例えば、EC2インスタンスがS3バケットにデータを保存する場合や、別のAWSアカウントのリソースにアクセスする場合など、ロールを使用して一時的なアクセス権限を付与することができます。ロールの主な利点は、永続的な認証情報を持たない点であり、必要な期間やタスクのみ権限を持つことができるため、セキュリティリスクを最小限に抑えることができます。

ロールとポリシーについて詳しくは次の記事で解説しています。

https://envader.plus/article/247

IAMユーザーの作成と管理

ユーザーの作成方法

AWSのIAMユーザーは、いくつかの方法で作成することができます。

AWSマネジメントコンソール

ブラウザベースのインターフェースを使用して、手動でユーザーを作成。簡単なステップに従って情報を入力し、ユーザーの作成と設定が可能です。

CLI (Command Line Interface)

コマンドラインを使用して、スクリプトや一連のコマンドでユーザーを迅速に作成。特に大量のユーザーを一度に作成する際などに便利です。

SDK

AWSの提供するソフトウェア開発キットを使用して、プログラム的にユーザーを作成。アプリケーションやシステムとの統合時に役立ちます。

IaC(Infrastracture as Code)

CroudFomationやTerraformといったIaCツールのコードで作成します。一貫性と保守性が向上します。以下はサンプルコードです。 sample-iam-userというユーザーをsysytemパスに作成しPurpose(目的)タグを付与しています。

resource "aws_iam_user" "sample_user" {
  name = "sample-iam-user"
  path = "/system/"
  
  tags = {
    "Purpose" = "Sample IAM User Creation using Terraform"
  }
}

アクセスキーの取り扱い

IAMユーザーがAWSサービスにプログラム的にアクセスする際には、アクセスキー (Access Key ID) とシークレットキー (Secret Access Key) が必要です。 重要性: アクセスキーとシークレットキーは、ユーザーの認証情報の一部として機能します。これらのキーを持っている者は、そのユーザーとしてAWSリソースにアクセスすることができるため、非常に慎重な取り扱いが求められます。

安全な管理・保管方法

キーは絶対に公開しない

公開場所やソースコードにキーを直接記載しないこと。

定期的にキーのローテーションを行う

古いキーを無効にし、新しいキーを発行することで、セキュリティリスクを低減します。

不要なキーは削除

使用していないキーは削除し、必要最低限のキーのみを保持することを心がける。

キーのアクセスを制限

キーの情報を必要とする者のみに共有し、それ以外の者からはアクセスできないようにする。

IAMグループとアクセス制御

IAMのベストプラクティスとして、ポリシーはグループにアタッチし、ユーザーを該当するグループに所属させることが推奨されます。これにより一貫したアクセス権限の提供と効率的な権限管理が可能となり、セキュリティの向上も期待できます。

グループの作成手順

  1. AWSマネジメントコンソールにログイン後、IAMダッシュボードを開きます。
  2. 左側のナビゲーションペインで「グループ」を選択し、「新しいグループの作成」をクリックします。
  3. 必要な情報を入力し、ユーザーをグループに追加することができます。

グループを利用したアクセス権限の設定

  • グループの詳細ページから「ポリシーのアタッチ」をクリックします。
  • 必要なポリシーを選択し、グループに割り当てることで、そのグループに所属するユーザーに指定のアクセス権限が適用されます。

Terraformのサンプルコード(IAMユーザーをグループに追加)

以下は、Terraformを使用してIAMユーザーをIAMグループに追加するサンプルコードです。

# IAMユーザーを作成
resource "aws_iam_user" "sample_user" {
  name = "sample-iam-user"
}

# IAMグループを作成
resource "aws_iam_group" "sample_group" {
  name = "sample-iam-group"
}

# IAMグループにユーザーを追加
resource "aws_iam_group_membership" "sample_membership" {
  name = "sample-membership"

  # IAMユーザーの名前
  users = [
    aws_iam_user.sample_user.name
  ]

  # IAMグループの名前
  group = aws_iam_group.sample_group.name
}

このコードでは、まずIAMユーザーsample-iam-userとIAMグループsample-iam-groupが作成されます。次に、aws_iam_group_membershipリソースを使用して、該当のユーザーをグループに追加します。

まとめ

IAMの基本を押さえる重要性

AWSを利用する際のセキュリティは非常に重要な要素です。IAMはその中心となるサービスであり、適切なアクセス制御を行うための基本的な知識は必須です。正確なユーザー管理やアクセス権限の設定を通じて、AWSリソースの安全性を確保することができます。

今後の学習のためのステップ

IAMの基本知識を習得した後は、更に応用的な知識や他のAWSサービスとの連携についての学習を進めることをおすすめします。以下の日本語のリソースを参考にしてください。

AWS公式ドキュメント

AWSの公式サイトには、IAMをはじめとする各サービスの詳細なドキュメントが提供されています。基本から応用まで幅広く学べるリソースです。

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/introduction.html

AWSブログ

AWSの公式ブログには、技術的なチュートリアルやユースケース、最新のアップデート情報などが掲載されています。IAMに関する記事も多数あり、実際の運用例などを学ぶことができます。

https://aws.amazon.com/jp/blogs/news/

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事