1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS認証系サービスを体系的に理解する

1
Posted at

どーも!shihopowerです!

AWSのSAP(Solutions Architect Professional)対策をしていると、IAM DB認証・Secrets Manager・Parameter Store・Cognito・IAM Identity Center…と認証系のサービスが次々と登場します。

「結局どれをどの場面で使えばいいの??」状態になったので、公式ドキュメントをもとに体系的に整理してみました。


忙しい人向け要約

AWS認証系サービスは「誰を認証するか」で3つに分類できます。

カテゴリ サービス 一言まとめ
AWSリソースの制御 IAM 全ての基盤。ロールとポリシーで権限管理
AWSリソースの制御 IAM Identity Center 社員向けSSO。Active Directory連携も可
アプリユーザーの認証 Cognito ユーザープール アプリの会員登録・ログイン機能
アプリユーザーの認証 Cognito IDプール アプリユーザーへの一時的AWS認証情報の付与
シークレット管理 Secrets Manager DBパスワード等の自動ローテーション管理
シークレット管理 Parameter Store 設定値・シークレットの低コスト管理

1. 全体像:「誰を」認証するかで3分類

AWS の認証系サービスが多い理由は、認証の対象がそもそも異なるからです。

① AWS リソースにアクセスする「AWSユーザー・サービス」を管理したい
  → IAM / IAM Identity Center

② アプリを使う「一般ユーザー(エンドユーザー)」を管理したい
  → Amazon Cognito

③ アプリが使う「パスワードやAPIキー(シークレット)」を管理したい
  → Secrets Manager / Parameter Store

この3分類を頭に入れておくと、サービス選択で迷わなくなります。


2. ① AWSリソースのアクセス制御

AWS IAM(Identity and Access Management)

IAMは、AWSリソースへのアクセスを安全に制御するためのサービスです。「認証(サインイン)」と「認可(リソースへのアクセス許可)」の両方を制御します。

主な機能

  • ユーザー・グループ・ロールの作成と管理
  • ポリシー(JSON)で細かな権限を設定
  • IAM DB認証でデータベースへのパスワードレスアクセスが可能
  • 追加コストなし

使う場面

  • Lambda関数にS3やRDSへのアクセス権を与えたいとき
  • EC2インスタンスが他のAWSサービスを呼び出すとき
  • すべての認証系サービスの土台として常に関わってくる

IAMはすべてのAWSサービスの権限管理の基盤です。他の認証系サービスを使う場合も、必ずIAMと組み合わせて利用します。


AWS IAM Identity Center(旧:AWS Single Sign-On)

IAM Identity Centerは、従業員(ワークフォース)向けのSSOサービスです。複数のAWSアカウントやアプリケーションへのアクセスを一元管理できます。

主な機能

  • 1回のログインで複数のAWSアカウントにアクセス(SSO)
  • Active DirectoryやOktaなどの既存IDプロバイダーと連携
  • 一時的な認証情報を自動発行
  • AWS Organizationsと連携して組織全体を管理

使う場面

  • 社員が複数のAWSアカウント(開発・本番など)を使い分けるとき
  • 既存のActive Directoryを活用してAWSアクセスを管理したいとき
  • 大規模な組織でAWSアカウントを一元管理したいとき

3. ② アプリのエンドユーザー認証

Amazon Cognito — ユーザープール(User Pools)

ユーザープールは、Webアプリやモバイルアプリのユーザーにサインアップとサインインの機能を提供するユーザーディレクトリです。

主な機能

  • メール・パスワードによるユーザー登録とログイン
  • Google・Facebook・Appleなどのソーシャルログイン連携
  • MFA(多要素認証)対応
  • 数百万ユーザーまでスケール可能

使う場面

  • スマホアプリに「会員登録・ログイン画面」を実装したいとき
  • ユーザー管理の仕組みをゼロから作りたくないとき
  • ソーシャルログインと自社ユーザー管理を統合したいとき

Amazon Cognito — IDプール(Identity Pools)

IDプールは、認証済みユーザーや未認証(ゲスト)ユーザーに対して、一時的なAWS認証情報を発行するサービスです。

主な機能

  • 認証済みユーザーへの一時的なAWSクレデンシャル発行
  • 未認証(ゲスト)ユーザーへの限定的なアクセス許可
  • ユーザープールと組み合わせた利用が一般的

使う場面

  • モバイルアプリのユーザーがS3に直接ファイルをアップロードするとき
  • ゲストユーザーにも一部のAWSリソースにアクセスさせたいとき

ユーザープールとIDプールの違いをひと言でいうと…

  • ユーザープール → 「誰?」を確認する(認証)
  • IDプール → 「何ができる?」のAWS権限を渡す(認可)

4. ③ シークレット・設定値の管理

AWS Secrets Manager

Secrets Managerは、データベース認証情報・APIキー・OAuthトークンなどのシークレットをライフサイクル全体を通じて管理するサービスです。

主な機能

  • シークレットの安全な保存(KMSで暗号化)
  • 自動ローテーション(RDS・Redshift・DocumentDB対応)
  • IAMポリシーによるアクセス制御
  • クロスアカウントでの共有

使う場面

  • RDSのパスワードを定期的に自動更新したいとき
  • APIキーをコードにハードコードせず安全に管理したいとき
  • コンプライアンス要件でシークレットのローテーションが義務付けられているとき

Secrets Managerは有料サービスです(シークレットごとの月額料金+APIコール料金)。コストが気になる場合はParameter Storeも検討しましょう。


AWS Systems Manager Parameter Store

Parameter Storeは、設定値とシークレットの両方を階層的に管理できるキーバリューストアです。

主な機能

  • 文字列・暗号化文字列(SecureString)・文字列リストの保存
  • KMSによる暗号化(SecureString)
  • バージョン管理とアクセス履歴
  • Lambda・EC2・ECSなどとのシームレスな統合

使う場面

  • 環境変数(APIエンドポイント、フラグ等)をコードから切り離したいとき
  • シークレットの自動ローテーションが不要で、コストを抑えたいとき
  • 設定値とシークレットを1つのサービスでまとめて管理したいとき

Secrets ManagerとParameter Storeの使い分け

Secrets Manager Parameter Store
自動ローテーション ✅ あり ❌ なし
クロスアカウント共有 ✅ あり ❌ なし
コスト 有料 無料〜(高スループットは有料)
用途 シークレット専用 設定値+シークレット

5. サービス選択ガイド

「どのサービスを使えばいい?」と迷ったときのフローです。

認証したいのは誰?
│
├─ AWSサービス同士・社内エンジニア
│   ├─ 個人やサービスの権限管理 → IAM
│   └─ 社員が複数アカウントにSSO → IAM Identity Center
│
├─ アプリの一般ユーザー
│   ├─ ログイン・会員管理 → Cognito ユーザープール
│   └─ AWSリソースへのアクセス権付与 → Cognito IDプール
│
└─ アプリが使うパスワード・キー
    ├─ 自動ローテーションが必要 → Secrets Manager
    └─ 設定値も含めて管理したい・コストを抑えたい → Parameter Store

6. 実践例で理解する選択の考え方

実際にどのサービスを選ぶか、具体的なシナリオで考えてみます。

シナリオ

以下のような構成のシステムがあります。

  • Lambda関数の上でアプリが動作し、同一VPC内のAurora DBからデータを取得する
  • LambdaはデータをS3バケット(SSE-KMS)に書き込む
  • 要件① DBの認証情報が漏洩した場合の影響を最小化したい
  • 要件② データはインターネットを経由せずに転送したい

選択肢の検討

要件①への対応

方法 問題点
A IAM DB認証を使う パスワード自体が存在しない → 漏洩リスクがゼロ ✅
B Secrets Managerで管理 パスワードは存在するため漏洩リスクは残る
C Parameter Storeで管理 同上

IAM DB認証では、パスワードの代わりに有効期間15分の認証トークンを使います。トークンはIAMが生成し、DBへの認証情報をアプリが持つ必要がありません。IAMロールが侵害された場合もロールを無効化するだけで被害を封じられます。

要件②への対応

方法 問題点
A S3ゲートウェイVPCエンドポイントを使う VPC内部のネットワークのみでS3と通信できる ✅
B HTTPS強制 通信は暗号化されるが、インターネットは経由する

正解の組み合わせ

IAM DB認証 + S3ゲートウェイVPCエンドポイント

  • 要件①:IAM DB認証でパスワード自体をなくす
  • 要件②:VPCエンドポイントでインターネットを経由しない

この問題のポイントは「静的なパスワードをそもそも持たない設計」にできるかどうかです。Secrets ManagerやParameter Storeは「パスワードを安全に管理する」サービスですが、IAM DB認証は「パスワード自体を不要にする」という発想の転換が求められます。


まとめ

AWS認証系サービスを「誰を認証するか」で整理するとスッキリします。

  • IAM:全ての基盤。AWSサービス同士の権限管理
  • IAM Identity Center:社員向けSSO
  • Cognito ユーザープール:アプリユーザーのログイン管理
  • Cognito IDプール:アプリユーザーへのAWS権限付与
  • Secrets Manager:シークレットの自動ローテーション管理
  • Parameter Store:設定値+シークレットの低コスト管理

そして、最もセキュアな選択肢は「シークレットをそもそも持たない設計(IAM DB認証など)」です。SAPの試験でも実務でも、この視点を持っておくと判断が速くなります!


最後まで読んでいただきありがとうございました!


参考:公式ドキュメント

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?