AWSを安全に利用するためには、適切なアクセス管理が不可欠です。本記事では、AWSのセキュリティの要となるIAM(Identity and Access Management)の基本概念から、ルートユーザーとIAMユーザーの違い、グループによる権限管理、MFA(多要素認証)の設定、AWS CLIの認証情報設定まで、セキュアなアクセス管理の基礎を体系的に解説します。
IAM(Identity and Access Management)とは
IAMは、AWSリソースへのアクセスをセキュアに管理するためのサービスです。「誰が」「どのリソースに」「どのような操作を」できるかを制御し、最小権限の原則に基づいたアクセス管理を実現します。
IAMは追加料金なしで利用でき、すべてのAWSアカウントで自動的に有効化されています。IAMはグローバルサービスであり、特定のリージョンに依存せず、すべてのリージョンで同じ設定が適用されます。
IAMの主要コンポーネント
IAMは以下の4つの主要コンポーネントで構成されています。
graph TB
subgraph "IAMの主要コンポーネント"
U[IAMユーザー]
G[IAMグループ]
R[IAMロール]
P[IAMポリシー]
end
P -->|アタッチ| U
P -->|アタッチ| G
P -->|アタッチ| R
U -->|所属| G| コンポーネント | 説明 |
|---|---|
| IAMユーザー | AWSを利用する人またはアプリケーションを表すエンティティ |
| IAMグループ | IAMユーザーの集合。権限をまとめて管理できる |
| IAMロール | 一時的な認証情報を使用してAWSリソースにアクセスするためのエンティティ |
| IAMポリシー | アクセス許可を定義するJSONドキュメント |
ルートユーザーとIAMユーザーの違い
AWSアカウントを作成すると、最初に「ルートユーザー」が作成されます。ルートユーザーは万能の権限を持つため、日常的な操作には使用せず、専用のIAMユーザーを作成して利用することがベストプラクティスです。
ルートユーザー
ルートユーザーは、AWSアカウント作成時に使用したメールアドレスとパスワードでサインインするアカウントです。アカウント内のすべてのリソースに対する完全なアクセス権を持ち、その権限を制限することはできません。
ルートユーザーでしか実行できない操作には以下のようなものがあります。
- AWSアカウントの解約
- アカウント名、メールアドレス、パスワードの変更
- IAMユーザーへの課金情報へのアクセス許可
- リザーブドインスタンスマーケットプレイスへの出品登録
- AWS GovCloudアカウントへのサインアップ
- S3バケットポリシーで誤って全ユーザーのアクセスを拒否した場合の復旧
IAMユーザー
IAMユーザーは、AWSアカウント内で作成するユーザーエンティティです。実際に人が使用する場合と、アプリケーションがプログラムからAWSにアクセスする場合の両方で利用されます。
| 比較項目 | ルートユーザー | IAMユーザー |
|---|---|---|
| 作成方法 | アカウント作成時に自動作成 | IAMで手動作成 |
| 権限 | 全権限(制限不可) | ポリシーで制御可能 |
| サインイン方法 | メールアドレス + パスワード | ユーザー名 + パスワード または アクセスキー |
| MFA | 強く推奨 | 推奨 |
| 日常利用 | 非推奨 | 推奨 |
ルートユーザーの保護に関するベストプラクティス
ルートユーザーは最高権限を持つため、厳重に保護する必要があります。
- ルートユーザーにMFAを有効化する:第三者による不正アクセスを防ぐため、必ずMFAを設定します
- ルートユーザーのアクセスキーを作成しない:アクセスキーが漏洩すると、アカウント全体が危険にさらされます
- 日常的な操作にルートユーザーを使用しない:管理者権限を持つIAMユーザーを作成し、そちらを使用します
- ルートユーザーの認証情報を安全に保管する:パスワードは複雑なものを使用し、他のサービスと共有しません
IAMユーザーの作成
IAMユーザーを作成する手順を説明します。AWSマネジメントコンソールから操作を行います。
コンソールからIAMユーザーを作成する手順
- IAMコンソールを開き、左側のナビゲーションペインで「ユーザー」を選択します
- 「ユーザーを作成」ボタンをクリックします
- ユーザー名を入力します(例:
admin-user) - AWSマネジメントコンソールへのアクセスを許可する場合は、「AWS Management Console へのユーザーアクセスを提供する」にチェックを入れます
- パスワードの設定方法を選択します(自動生成またはカスタムパスワード)
- 「次へ」をクリックし、許可オプションでポリシーをアタッチします
- 設定を確認し、「ユーザーを作成」をクリックします
IAMユーザーの命名規則
IAMユーザー名には以下の規則があります。
- 最大64文字
- 使用可能な文字:英数字、プラス(+)、イコール(=)、カンマ(,)、ピリオド(.)、アットマーク(@)、アンダースコア(_)、ハイフン(-)
- 同一アカウント内で一意である必要がある
- 大文字と小文字を区別する
実務では、以下のような命名規則を採用することが多いです。
# 人間ユーザーの例
tanaka.taro
suzuki.hanako
# サービスアカウントの例
svc-app-backend
svc-batch-processor
IAMグループによる権限管理
IAMグループは、IAMユーザーの集合です。グループにポリシーをアタッチすることで、所属するすべてのユーザーに同じ権限を付与できます。
グループを使用するメリット
グループを使用することで、以下のメリットが得られます。
- 権限管理の効率化:個々のユーザーではなくグループ単位で権限を管理できます
- 一貫性の確保:同じ役割を持つユーザーに確実に同じ権限を付与できます
- 変更の容易さ:ポリシーの変更がグループ全体に即座に反映されます
- 可視性の向上:誰がどの権限を持っているかを把握しやすくなります
グループ設計のベストプラクティス
グループは職務や役割に基づいて設計します。
graph TB
subgraph "IAMグループの設計例"
subgraph "Administrators"
A1[admin-user-1]
A2[admin-user-2]
end
subgraph "Developers"
D1[dev-user-1]
D2[dev-user-2]
D3[dev-user-3]
end
subgraph "ReadOnlyUsers"
R1[readonly-user-1]
R2[readonly-user-2]
end
end
AP[AdministratorAccess] -->|アタッチ| Administrators
DP[PowerUserAccess] -->|アタッチ| Developers
RP[ReadOnlyAccess] -->|アタッチ| ReadOnlyUsers一般的なグループの例として、以下のようなものがあります。
| グループ名 | 用途 | 推奨ポリシー |
|---|---|---|
| Administrators | 管理者 | AdministratorAccess |
| Developers | 開発者 | PowerUserAccess または カスタムポリシー |
| Operations | 運用担当 | 運用に必要なサービスへのアクセス |
| ReadOnlyUsers | 監査・閲覧専用 | ReadOnlyAccess |
| BillingUsers | 請求情報閲覧 | Billing または AWSBillingReadOnlyAccess |
グループの制約事項
IAMグループには以下の制約があります。
- グループのネスト(グループ内にグループを含める)はできない
- 1つのユーザーは最大10個のグループに所属できる
- 1つのアカウントで作成できるグループ数はデフォルトで300(上限緩和可能)
- グループ自体はサインインに使用できない
MFA(多要素認証)の設定
MFA(Multi-Factor Authentication)は、ユーザー名とパスワードに加えて、第2の認証要素を要求するセキュリティ機能です。AWSでは、すべてのIAMユーザー、特に管理者権限を持つユーザーにMFAを有効化することを強く推奨しています。
MFAの認証要素
MFAは以下の3つの認証要素のうち、2つ以上を組み合わせます。
| 認証要素 | 説明 | 例 |
|---|---|---|
| 知識情報 | 本人だけが知っている情報 | パスワード、PIN |
| 所持情報 | 本人だけが持っている物 | スマートフォン、セキュリティキー |
| 生体情報 | 本人固有の身体的特徴 | 指紋、顔認証 |
AWSで利用可能なMFAデバイス
AWSでは以下のMFAデバイスをサポートしています。
パスキーとセキュリティキー
FIDO標準に基づいた認証方式です。パスキーは指紋や顔認証を使用してデバイス間で同期され、セキュリティキー(YubiKeyなど)はフィッシング耐性が高い物理デバイスです。
仮想MFAデバイス
スマートフォンアプリを使用したTOTP(時間ベースのワンタイムパスワード)認証です。以下のアプリが利用可能です。
- Google Authenticator
- Microsoft Authenticator
- Twilio Authy
- Duo Mobile
ハードウェアTOTPトークン
タレス社が提供する物理的なトークンデバイスです。AWS専用に設計されており、高いセキュリティが求められる環境で使用されます。
仮想MFAデバイスの設定手順
最も一般的な仮想MFAデバイスの設定手順を説明します。
- スマートフォンに認証アプリ(Google Authenticatorなど)をインストールします
- IAMコンソールで、ユーザーのセキュリティ認証情報タブを開きます
- 「MFAデバイスの割り当て」をクリックします
- デバイス名を入力し、「認証アプリケーション」を選択して「次へ」をクリックします
- 「QRコードを表示」をクリックし、認証アプリでスキャンします
- 認証アプリに表示される連続した2つのMFAコードを入力します
- 「MFAを追加」をクリックして完了します
MFAの強制適用
組織のセキュリティポリシーとして、MFAを設定していないユーザーの操作を制限することができます。以下のIAMポリシーは、MFAが有効でない場合にほとんどの操作を拒否します。
|
|
AWS CLIの認証情報設定
AWS CLIは、コマンドラインからAWSサービスを操作するためのツールです。CLIを使用するには、認証情報の設定が必要です。
アクセスキーの作成
AWS CLIで認証するためのアクセスキーを作成します。
- IAMコンソールでユーザーを選択します
- 「セキュリティ認証情報」タブを開きます
- 「アクセスキー」セクションで「アクセスキーを作成」をクリックします
- ユースケースとして「コマンドラインインターフェイス(CLI)」を選択します
- 確認のチェックボックスにチェックを入れ、「次へ」をクリックします
- 説明タグを入力(任意)し、「アクセスキーを作成」をクリックします
- アクセスキーIDとシークレットアクセスキーを安全に保存します
シークレットアクセスキーは作成時に一度しか表示されません。紛失した場合は、新しいアクセスキーを作成する必要があります。
AWS CLIの設定
AWS CLIをインストールした後、aws configureコマンドで認証情報を設定します。
|
|
以下の情報を順番に入力します。
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: ap-northeast-1
Default output format [None]: json
設定された認証情報は、以下のファイルに保存されます。
~/.aws/credentials:アクセスキーとシークレットキー~/.aws/config:リージョンと出力形式
名前付きプロファイルの使用
複数のAWSアカウントを使い分ける場合は、名前付きプロファイルを使用します。
|
|
プロファイルを指定してコマンドを実行するには、--profileオプションを使用します。
|
|
環境変数AWS_PROFILEを設定することで、デフォルトのプロファイルを切り替えることもできます。
|
|
アクセスキーのセキュリティベストプラクティス
アクセスキーは漏洩すると重大なセキュリティリスクとなるため、以下のベストプラクティスを遵守します。
- アクセスキーをコードにハードコードしない:環境変数、AWS Systems Manager Parameter Store、AWS Secrets Managerを使用します
- 定期的にアクセスキーをローテーションする:90日以内のローテーションが推奨されています
- 未使用のアクセスキーを削除する:使用していないアクセスキーは速やかに削除します
- 最小権限の原則を適用する:アクセスキーに関連付けるポリシーは必要最小限にします
- GitHubなどのリポジトリにコミットしない:
.gitignoreに認証情報ファイルを追加します
IAM Identity Centerの推奨
2024年以降、AWSは長期的なアクセスキーの代わりに、AWS IAM Identity Center(旧AWS SSO)の使用を推奨しています。IAM Identity Centerを使用すると、以下のメリットがあります。
- 一時的な認証情報を使用するためセキュリティが向上
- 複数アカウントへのアクセスを一元管理
- 企業のIDプロバイダー(Okta、Azure ADなど)との連携
- AWS CLIとの統合(
aws sso loginコマンド)
まとめ
本記事では、IAMの基本概念からルートユーザーの保護、IAMユーザーとグループの作成、MFAの設定、AWS CLIの認証情報設定まで解説しました。
IAMはAWSセキュリティの基盤であり、以下のポイントを押さえることが重要です。
- ルートユーザーは日常的に使用せず、MFAで保護する
- IAMユーザーとグループを活用して効率的に権限管理を行う
- MFAを有効化してセキュリティを強化する
- アクセスキーは慎重に管理し、可能であればIAM Identity Centerを使用する
次回の記事では、IAMロールとポリシーの仕組みについて詳しく解説します。ロールを使用した一時的な認証情報の取得や、ポリシーのJSON構造を理解することで、より柔軟で安全な権限設計ができるようになります。