1. 認証方式の全体像
AWSへのアクセス方法
│
├── IAMユーザー
│ ├── コンソールログイン(パスワード)
│ └── アクセスキー(Access Key ID + Secret Access Key)
│
├── IAM Identity Center(旧 AWS SSO)
│ ├── 外部IdP(Okta, Azure AD 等)と連携
│ └── 一時クレデンシャルを発行
│
└── IAMロール(システム用)
└── EC2, Lambda, ECS 等のAWSサービスが使用
2. IAM(Identity and Access Management)
概要
- AWSリソースへのアクセス権限を管理するサービス
- 人間とシステムの両方の認証・認可を担う
IAMユーザー
- AWSアカウント内に作成するユーザー
- 2種類の認証情報を持てる
| 認証情報 | 用途 |
|---|---|
| パスワード | ブラウザでAWSコンソールにログイン |
| アクセスキー | CLIやSDKでAWSを操作 |
IAMロール
- 人間ではなくシステム(EC2, Lambda等)に付与する権限
- IAM Identity Center では代替不可
- EC2インスタンスプロファイル、Lambdaロール等として使用
IAMポリシー
- ユーザー・ロールに付与する権限の定義
- 例:
AdministratorAccess(全権限)、ReadOnlyAccess(読み取り専用)
3. IAM Identity Center(旧 AWS SSO)
概要
- 人間のアクセスを一元管理するサービス
- 複数のAWSアカウントに1つのIDでアクセス可能
IAMユーザーとの比較
| IAMユーザー | IAM Identity Center | |
|---|---|---|
| ユーザー管理 | AWS内で管理 | 外部IdPとの連携も可能 |
| 認証情報 | パスワード・アクセスキー | 外部IdPのID/パスワード |
| クレデンシャル | 長期(無期限) | 短期(一時的) |
| 複数アカウント | アカウントごとにユーザー作成が必要 | 1つのIDで複数アカウント |
| セキュリティリスク | アクセスキー漏洩のリスク | 低い |
| 用途 | 個人・小規模 | 企業・複数アカウント環境 |
許可セット(Permission Set)
- IAM Identity Center における権限の単位
AdministratorAccess等のAWSマネージドポリシーを割り当て可能
aws sso login の設定例
# ~/.aws/config
[sso-session my-sso]
sso_start_url = https://my-company.awsapps.com/start sso_region = ap-northeast-1 sso_registration_scopes = sso:account:access
[profile dev]
sso_session = my-sso sso_account_id = 111111111111 sso_role_name = AdministratorAccess region = ap-northeast-1 output = json
# ログイン
aws sso login --sso-session my-sso
# ログアウト
aws sso logout
4. アクセスキー(Access Key ID / Secret Access Key)
概要
- IAMユーザーに紐づくCLI・SDK用の認証情報
- コンソールログインとは独立している
作成手順
AWSコンソール
→ 右上のアカウント名
→ セキュリティ認証情報
→ アクセスキー → アクセスキーを作成
→ ⚠️ Secret Access Key は作成時のみ表示(CSVで保存推奨)
設定方法
ウィザードで設定(推奨)
aws configure --profile dev
# → Access Key ID, Secret Access Key, region, output を入力
ファイルに直接記述
# ~/.aws/credentials
[dev]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCY
注意点
| 注意点 | 内容 |
|---|---|
| Secret は作成時のみ表示 | 必ずCSVで保存 |
| Gitにコミットしない | .gitignore に ~/.aws を追加 |
| 定期的にローテーション | 90日ごとの更新推奨 |
| 1ユーザーに最大2つまで | ローテーション時に活用 |
5. ~/.aws/config の記述方法
基本構造
# デフォルトプロファイル
[default]
region = ap-northeast-1 output = json # 名前付きプロファイル
[profile dev]
region = ap-northeast-1 output = json
[profile prod]
region = us-east-1 output = json
主な設定項目
| 項目 | 説明 | 例 |
|---|---|---|
region | デフォルトリージョン | ap-northeast-1 |
output | 出力形式 | json / text / table / yaml |
role_arn | AssumeRoleのARN | arn:aws:iam::... |
source_profile | 元プロファイル | default |
sso_session | SSOセッション名 | my-sso |
AssumeRoleの設定例
[profile base]
region = ap-northeast-1
[profile dev]
role_arn = arn:aws:iam::111111111111:role/DevRole source_profile = base region = ap-northeast-1
[profile prod]
role_arn = arn:aws:iam::222222222222:role/ProdRole source_profile = base region = ap-northeast-1
6. aws configure コマンド
概要
- アクセスキーをインタラクティブに設定するコマンド
~/.aws/credentialsと~/.aws/configに保存される
使い方
# デフォルトプロファイルの設定
aws configure
# 名前付きプロファイルの設定
aws configure --profile dev
# 入力項目
# AWS Access Key ID: AKIAIOSFODNN7EXAMPLE
# AWS Secret Access Key: xxxxxxxxxxxxxxxx
# Default region name: ap-northeast-1
# Default output format: json
7. aws login コマンド
概要
- AWS CLI v2 の正式コマンド
- AWSコンソールのセッションを流用してCLI認証する
- アクセスキー不要でローカル開発に利用可能
特徴
| 項目 | 内容 |
|---|---|
| 認証方法 | ブラウザでAWSコンソールにサインイン |
| 一時クレデンシャル有効期限 | 約1時間(自動リフレッシュ) |
| リフレッシュトークン有効期限 | 約8時間(コンソールセッションに依存) |
| 設定ファイル | region のみでOK |
使い方
# 基本(ブラウザが自動で開く)
aws login --profile dev
# リモート環境(ブラウザが開けない場合)
aws login --profile dev --remote
再ログインが必要なケース
- AWSコンソールから手動でサインアウトした
- コンソールセッションがタイムアウトした
- リフレッシュトークンが期限切れ(約8時間)
- PCを再起動してキャッシュが消えた場合
8. 認証方法の比較まとめ
| 認証方法 | ブラウザ | キー管理 | 有効期限 | 用途 |
|---|---|---|---|---|
aws login | ✅ 必要 | 不要 | 約8時間 | ローカル開発 |
| アクセスキー | 不要 | ✅ 必要 | 無期限 | 汎用・自動化 |
aws sso login | ✅ 必要 | 不要 | 一時的 | 企業SSO環境 |
| 環境変数 | 不要 | ✅ 必要 | 無期限 | CI/CD |
| IAMロール | 不要 | 不要 | 自動更新 | AWSサービス間 |
9. 規模別おすすめ構成
| 状況 | おすすめ |
|---|---|
| 個人・単一アカウント | aws login またはアクセスキー |
| 複数アカウントを頻繁に切り替える | AssumeRole |
| 企業・複数アカウント・複数人 | IAM Identity Center |
| CI/CD・自動化 | アクセスキー または 環境変数 |
| EC2/Lambda等のAWSサービス | IAMロール |
No responses yet