「AWSのIAMについて概要が知りたい。IAMとは?ユーザー・グループ・ポリシー・ロールとは?」
このような疑問に対して、筆者が業務で使用するためにAWSについて調べた内容をメモとしてまとめたものをご紹介いたします。メモベースですので、分かりにくい箇所があるかも知れません。ご容赦ください。
この記事で分かること
- IAMとは
- IAMの主要トピックについて(ユーザー・アクセスキー(認証情報)・IAMグループ・IAMポリシー・IAMロール)
- 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ポリシー
・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ロール
ポリシーをアタッチして使用
一時的な認証情報として使用
ユーザーのアクティビティの記録
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設計のベストプラクティス
- 1 アカウント設定などの必要な場合を除いて、ルートユーザーを利用しない
- 2 ルートユーザーなどの特権ユーザーに対して、MFAを有効化する
- 3 利用者ごとにIAMユーザーを作成する
- 4 組織利用の場合は、役割毎のIAMユーザーを作成して、グループで管理するのを基本とする
- 5 最小限の権限設定と不要な認証情報は削除を心がける
- 6 ユーザーのために、強度の高いパスワードポリシーを設定する
- 7 EC2インスタンスで作動するアプリケーションなどプログラムから利用する場合はなるべくロールを利用する
- 8 モバイルやアプリケーションも含め、一時利用にはSTSなどで最小限の利用許可を与える
- 9 AWSアカウントのアクティビティを常に監視する
ベストプラクティスに沿ったIAM設計をすることが望ましい
-
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ソリューションアーキテクトアソシエイト勉強法/主な学習トピックとポイント
本記事がお役に立てば幸いです。