【AWS】IAM概要まとめ/ユーザー・グループ・ポリシー・ロールとは?

AWS

「AWSのIAMについて概要が知りたい。IAMとは?ユーザー・グループ・ポリシー・ロールとは?」

このような疑問に対して、筆者が業務で使用するためにAWSについて調べた内容をメモとしてまとめたものをご紹介いたします。メモベースですので、分かりにくい箇所があるかも知れません。ご容赦ください。

この記事で分かること

  • IAMとは
  • IAMの主要トピックについて(ユーザー・アクセスキー(認証情報)・IAMグループ・IAMポリシー・IAMロール)
  • IAMの設計について
  • メモ作成にあたり、参考にさせていただいたページ

参考情報

>> 【公式】AWS ドキュメント IAM

IAMとは

IAMはAWSを扱ううえで、非常に重要な概念の一つです。セキュリティ事故などを防ぐためにも、しっかりと把握する必要があるのですが、理解しにくい部分が多い厄介な概念でもあります。

まず、IAMで重要なトピックは以下の5つです。

  • ユーザー
  • アクセスキー(認証情報)
  • IAMグループ
  • IAMポリシー
  • IAMロール

それぞれを見ていきましょう。

ユーザー

    ルートユーザー

  • AWSアカウント作成時にクレジットカード情報を登録して作成したアカウント
  • 全てのAWSサービスとリソースを使用できる権限
  • 請求情報閲覧可能・パスワード変更可能
  • 日常的なタスクはルートユーザーを使用しないことが推奨される
  • ※パワーユーザー IAMユーザーやグループの管理以外の全てのAWSサービスにフルアクセスできるユーザー

    ルートユーザーのみ実施権限

  • AWSルートアカウントのメアド、PW変更
  • IAMユーザーの課金情報へのアクセスに関するactivare/deactivate
  • 他のAWSアカウントへのRoute53のドメイン登録の移行
  • CloudFrontのキーペアの作成
  • AWSサービス(サポート等)のキャンセル
  • AWSアカウントの停止
  • コンソリデイテッドビリングの設定
  • 脆弱性診断フォームの提出
  • 逆引きDNS申請

IAMユーザー

設定上限 ・1アカウントで5000ユーザーまで作成可能
設計内容 ユーザー名
パス(オプション) ・ユーザーにオプションとして設定できる情報
・パスを元にユーザーの検索が可能
・組織階層やプロジェクトなどを設定
 (例:/aws/sa)
所属グループ ・10のグループまで設定可能
パーミッション ・AWSサービスへのアクセス権限

IAMユーザーの認証情報

アクセスの種類

プログラムによるアクセス
AWSマネジメントコンソールへのアクセス

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

AWS API, CLI, SDKなどの開発ツールのアクセスキーIDとシークレットアクセスキーを有効にします。

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

ユーザーにAWSマネジメントコンソールへのサインインを許可するためのパスワードを有効にします。

アクセスキー

以下の2種類が発行される。
・アクセスキーID
・シークレットアクセスキー

IAMユーザーは認証情報
・パスワード
・アクセスキー(アクセスキーIDとシークレットアクセスキー)
でたとえばEC2などのインスタンスを作成したり操作可能になる。

一方、注意点として、AWS CLIの操作時にアクセスキー情報を付与すると、IAMユーザーがAWSマネジメントコンソールから操作するのと同様に、AWS上の環境にログインしてEC2を作成したり、削除したりすることが可能。

もし仮に、誤まってコードをGit Hubなどにpushしてアクセスキーが不正利用された場合、高額の請求が発生する恐れがある。

IAMグループ

IAMグループの特徴

  • IAMグループは正式な認証情報ではない
  • IAMグループは複数のIAMユーザーのまとまりである
  • ユーザーは個人だけではなく、プログラムが利用する場合もある
  • IAMユーザーはそれぞれに認証情報を持っている
  • 認証情報にはパスワードか、アクセスキーかもしくは両方持つケースがある
設定上限 ・1アカウントで300グループまで作成可能
設計内容 〇グループ名
〇パス(オプション)
・組織階層などをセット (例:/aws/)
〇パーミッション
・グループに設定したパーミッションは
 IAMユーザーに付与したパーミッションと同時に評価する

IAMの認証方式

アクセスキーID/
シークレットアクセスキー
・EC2インスタンス接続などREST/Query形式
・API利用時の認証に使用する
X.509 Cortificate ・SOAP形式のAPIリクエスト用の認証方式
AWSマネジメントコンソールへの
ログインパスワード
・AWSアカウントごとに設定
・デフォルトは未設定(ログインできない)
MFA(多要素認証) ・物理デバイスなどを利用したピンコードによる認証方式
・ルートアカウントなどにMFAを付与してセキュリティを強化する

IAMポリシー

IAMポリシーとは
・AWSで操作できる権限を表したもの
・JSON形式で記述された設定ファイル
・認証主体(Identity)にアタッチして使用
さまざまな管理ポリシー AWS
管理ポリシー
・AWSが作成および管理する管理ポリシー
カスタマー
管理ポリシー
・AWSアカウントで作成・管理する管理ポリシー
・同じポリシーを複数のIAMエンティティに
アタッチできる

インライン
ポリシー
・自身で作成および管理するポリシー
・1つのプリンシパルエンティティ
 (ユーザー, グループ、またはロール)に埋め込まれた
 固有ポリシーで、プリンシパルエンティティに
 アタッチすることができる

IAMポリシー
IAMポリシーはJSON形式で設定される。
Principal, Action, Resource, Conditionのそれぞれの頭文字を取って、PARCモデルといわれる場合もある。

  • Sid 分かりやすい名前を付ける
  • Effect allow/deny
  • Principal どこに対しての操作か提示 例 *
  • Action どんな操作かを提示 例 s3のバケット名など
  • Resource arn名を記載
  • Condition 各種条件、接続可能なIPや時間など

    IAMポリシー
    ユーザーベースとリソースベースのポリシー適用がある

  • ユーザーベース
  • リソースベースのポリシー適用
     S3バケット
     SNS
     SQS
     →AWSリソース間のアクセスを可能にする
     →コンポーネント間の連携などに利用する

IAMロール

IAMロールとは
ポリシーをアタッチして使用
一時的な認証情報として使用

ユーザーのアクティビティの記録

Access Advisorの
Service Last Accessed Data
・IAMエンティティに(ユーザー、グループ、ロール)が
 最後にAWSサービスにアクセスした日付と時刻を表示する機能
Credential Report ・利用日時などが記録されたIAM認証情報にかかるレポートファイル
AWS Condig ・IAMの」User、Group、Role、Policyに関して、
 変更履歴、構成変更を管理・確認することができる機能
AWS CloudTrial ・AWSインフラストラクチャ全体でアカウントアクティビティを
 ログに記録し、継続的に監視し、保持することができる機能

    アクセス権限の一時付与

  • 一時的なアクセス権限の付与を可能にする
AWS Security Token Service (STS) ・動的にIAMユーザーを作り、
 一時的に利用するトークンを発行するサービス
Temporary Security Credentials ・AWSに対して、一時的な認証情報を作成する仕組み

IAMの設計について

AWSを利用するユーザーの役割やアクセス権限を自社の組織構造と合わせて設計することが重要

↓ AWS利用組織 ↓ セキュリティポリシー
自社に最適なIAM設計の実現
    IAM設計のベストプラクティス
    ベストプラクティスに沿ったIAM設計をすることが望ましい

  • 1 アカウント設定などの必要な場合を除いて、ルートユーザーを利用しない
  • 2 ルートユーザーなどの特権ユーザーに対して、MFAを有効化する
  • 3 利用者ごとにIAMユーザーを作成する
  • 4 組織利用の場合は、役割毎のIAMユーザーを作成して、グループで管理するのを基本とする
  • 5 最小限の権限設定と不要な認証情報は削除を心がける
  • 6 ユーザーのために、強度の高いパスワードポリシーを設定する
  • 7 EC2インスタンスで作動するアプリケーションなどプログラムから利用する場合はなるべくロールを利用する
  • 8 モバイルやアプリケーションも含め、一時利用にはSTSなどで最小限の利用許可を与える
  • 9 AWSアカウントのアクティビティを常に監視する

    IAMユーザー or IAMグループ

  • 少数利用:IAMユーザー
  • 組織利用:IAMグループ
    ※今後増える場合も
    ※人が増えるたびにグループに追加していけばよいので、運用が楽

    IAMグループ設計

  • 組織別、個人単位にAWS利用者とその役割別の利用範囲を整理して、グループ設計を実施する

【手順】

AWS利用者と役割の洗い出し ・AWS利用者の特定
・利用者の役割利用範囲を整理
利用グループへと集約 ・同じ役割や利用範囲を一つのグループとしてまとめる
・グループ別の名称を最小限利用範囲を確定する

IAM関連の用語について

リソース
IAMユーザー、IAMグループ、IAMロールなどのIAMで作成、編集、削除が可能なリソースオブジェクトのこと

アイデンティティ(ID)
リソースのうち、IAMユーザー、IAMグループ、IAMロールなど、ポリシーを割り当てられるもの。

エンティティズ
リソースのうち、AWSが認証に使用するもの
IAMユーザー、フェデレーションユーザー、IAMロールなど

プリンシパル
IAMユーザー、フェデレーションユーザー、IAMロール、AWSリソースなど、AWSにサインインしてリクエストを出すもの。

参考にさせていただいたページ

>> 【公式】AWS ドキュメント
>> AWSチャンネル
>> Acrovision > 技術記事 >AWS
>> これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座(SAA-C02試験対応版)
>> TOPにもどる

まとめ

本記事では「AWSのIAMについて概要がしりたい。IAMとは?ユーザー・グループ・ポリシー・ロールとは?」という疑問に対し、筆者や調べた内容メモをご紹介しました。

この記事でご紹介した内容

  • IAMとは
  • IAMの主要トピックについて(ユーザー・グループ・ポリシー・ロール)
  • IAMの設計について

なお、筆者がAWSソリューションアーキテクト アソシエイトの試験対策についてまとめた記事がありますので、ご紹介します。
【AWS SAA関連記事】
>> 【第1回】AWSソリューションアーキテクトアソシエイト勉強法/初心者が最短合格するための学習方法
>> 【第2回】AWSソリューションアーキテクトアソシエイト勉強法/主な学習トピックとポイント

本記事がお役に立てば幸いです。