AWS Certified Generative AI Developer - Professional 資格対策コース
セキュアアクセス(ID フェデレーション・RBAC・最小権限)
このレッスンで学ぶこと 対応試験ドメイン D2 タスク 2.3.3(セキュアアクセス)。GenAI アプリの認証認可を、AWS IAM(ロール・最小権限)、AWS IAM Identity Center(従業員の ID フェデレーション・SSO)、Amazon Cognito(アプリ利用者の認証認可)で適切に使い分け、最小権限とロールベースアクセス制御(RBAC)を設計できるようになります。
解説
GenAI アプリは強力なモデルや機密データにアクセスするため、「誰が・何に・どこまで」アクセスできるかを厳密に制御する必要があります。試験では「アプリ利用者なのか従業員なのか」「IAM・Cognito・IAM Identity Center のどれを使うか」という主体別の使い分けが問われます。
3 つのアクセス制御サービスの役割
| サービス | 主に守る対象 | 役割 |
|---|---|---|
| AWS IAM | AWS リソースへのアクセス(人/サービス/ロール) | ロール・ポリシーで最小権限。Lambda や Bedrock 呼び出し権限の付与 |
| AWS IAM Identity Center | 従業員(社内ユーザー) | 外部 IdP とのフェデレーション・SSO、複数アカウントへの一元アクセス |
| Amazon Cognito | アプリのエンドユーザー(顧客) | ユーザープールでサインアップ/サインイン、ID プールで一時 AWS 認証情報の発行 |
ポイントは主体の違いです。アプリを使う一般顧客の認証は Amazon Cognito、社内従業員の SSO・ID フェデレーションは AWS IAM Identity Center、AWS リソースやサービスへの権限付与は AWS IAM、と切り分けます。
最小権限とロールベースアクセス制御(RBAC)
最小権限とは、各主体にタスク遂行に必要な権限だけを与える原則です。GenAI 文脈では、たとえば「Bedrock の特定モデルだけ呼べる」「特定の Knowledge Base だけ読める」「特定の S3 プレフィックスだけ参照できる」と絞ります。RBAC は役割(ロール)に権限をまとめ、ユーザーをロールに割り当てる方式で、管理を簡潔に保てます。Bedrock では IAM ポリシーで bedrock:InvokeModel を特定モデル ARN に限定する、といった粒度で制御します。
ID フェデレーション
ID フェデレーションは、外部の ID プロバイダー(社内 Active Directory、Okta、Google など)の認証情報で AWS にアクセスさせる仕組みです。従業員向けは AWS IAM Identity Center が外部 IdP と連携し、AWS への SSO を実現します。アプリの顧客向けは Amazon Cognito がソーシャルログインや SAML/OIDC の IdP とフェデレーションし、一時的な AWS 認証情報を発行します。長期のアクセスキーを配るのではなく、フェデレーションで一時認証情報を使うのがセキュアです。
コード例(IAM ポリシーで Bedrock を最小権限化)
特定モデルだけ呼べるよう絞った IAM ポリシーの抜粋です。アクセスキーは使いません。
JSON
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "bedrock:InvokeModel",
"Resource": "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"
}
]
}試験で問われるポイント
- 主体で使い分ける。アプリの一般顧客は Amazon Cognito、社内従業員の SSO/フェデレーションは AWS IAM Identity Center、AWS リソース/サービスの権限は AWS IAM。「顧客向けサインアップ」を IAM ユーザーで作るのはアンチパターン
- 最小権限は ARN 単位で絞る。
bedrock:InvokeModelを全モデルではなく特定モデル ARN に限定する、特定 Knowledge Base だけ読めるようにする、といった粒度 - 長期キーではなくロール/一時認証情報。アプリやサービスにはアクセスキーを埋め込まず、IAM ロールや Cognito の一時認証情報を使う
- IAM Identity Center は「複数 AWS アカウントへの従業員 SSO の一元管理」、Cognito は「アプリのエンドユーザー認証」という違いが頻出
サービスの使い分け早見表
| やりたいこと | 使うもの | 混同しやすいもの |
|---|---|---|
| アプリの一般顧客を認証 | Amazon Cognito | IAM ユーザー(顧客向けには不適) |
| 従業員の SSO・外部 IdP フェデレーション | AWS IAM Identity Center | Amazon Cognito(顧客向け寄り) |
| AWS リソース/サービスへの権限付与 | AWS IAM(ロール・ポリシー) | Cognito(アプリ利用者の認証寄り) |
| アプリ/サービスの AWS 認証情報 | IAM ロール・一時認証情報 | 長期アクセスキーの埋め込み(非推奨) |
まとめ
GenAI のセキュアアクセスは「主体は誰か」で使い分けます。一般顧客は Amazon Cognito、従業員の SSO・ID フェデレーションは AWS IAM Identity Center、AWS リソース/サービスの権限は AWS IAM です。最小権限を ARN 単位で絞り、長期キーではなくロール・一時認証情報を使うのが原則です。RBAC で役割に権限をまとめ、管理を簡潔かつ安全に保ちます。
次のステップ
次のクイズレッスンで、主体別のアクセス制御サービスの使い分けと最小権限設計を問うシナリオ問題に挑戦しましょう。
関連レッスン
- 停止条件・タイムアウト・Human-in-the-loop(pro-agents-guarded)
- エンタープライズ統合(イベント駆動・疎結合)(pro-enterprise-integration)
- CI/CD パイプラインと GenAI ゲートウェイ(pro-cicd-gateway)