IAM で OpenID Connect (OIDC) ID プロバイダーを作成する - AWS Identity and Access Management

IAM で OpenID Connect (OIDC) ID プロバイダーを作成する

IAM OIDC ID プロバイダーOpenID Connect (OIDC) 標準 (例: Google または Salesforce) をサポートする ID プロバイダー (IdP) サービスを表す IAM のエンティティです。OIDC 互換 IdP と AWS アカウント の間で信頼性を確立するときに IAM OIDC ID プロバイダーを使用します。このプロバイダーは、AWS リソースへのアクセスを必要とするモバイルアプリやウェブアプリケーションを作成するときに、カスタムサインインコードの作成や独自のユーザー ID の管理をしない場合に役立ちます。このシナリオの詳細については、「OIDC フェデレーション」を参照してください。

AWS Management Console、AWS Command Line Interface、Tools for Windows PowerShell、または IAM API を使用して、IAM OIDC ID プロバイダーを作成および管理できます。

IAM OIDC ID プロバイダーを作成したら、1 つ以上の IAM ロールを作成する必要があります。ロールは AWS のアイデンティティであり、それ自体には (ユーザーのような) 認証情報がありません。しかし、この例で、ロールが動的に割り当てられるフェデレーティッドユーザーは、組織の IdP から認証されます。このロールで、組織の IdP が AWS にアクセスするための一時的なセキュリティ認証情報をリクエストできるようにします。ロールに割り当てられているポリシーは、フェデレーティッドユーザーが AWS で実行できることを決定します。サードパーティー ID プロバイダーのロールを作成するには、「サードパーティー ID プロバイダー (フェデレーション) 用のロールを作成する」をご参照ください。

重要

oidc-provider リソースをサポートするアクションの ID ベースのポリシーを設定する場合は、IAM は指定されたパスを含む OIDC ID プロバイダーの完全な URL を評価します。OIDC ID プロバイダーの URL にパスがある場合は、そのパスを oidc-provider ARN に Resource 要素の値として含める必要があります。URL ドメインにフォワードスラッシュおよびワイルドカード (/*) を追加することもできます。または、URL パスの任意の時点でワイルドカード文字 (* および ?) は任意の時点で使用します。リクエスト内の OIDC ID プロバイダー URL がポリシーの Resource 要素で設定されている値と一致しない場合、リクエストは失敗します。

IAM OIDC フェデレーションの一般的な問題をトラブルシューティングするには、AWS re:Post の OIDC に関連するエラーの解決に関する記事を参照してください。

前提条件: ID プロバイダーの設定を検証する

IAM OIDC ID プロバイダーを作成する前に、IdP から次の情報を取得しておく必要があります。OIDC プロバイダー設定情報を取得する方法の詳細については、IdP のドキュメントを参照してください。

  1. OIDC ID プロバイダーの公開 URL を決定します。URL は「https://」で始まる必要があります。OIDC 標準によって、パスコンポーネントは許可されますが、クエリパラメータは許可されません。通常、URL は https://server.example.org や https://example.com などのホスト名のみで構成されます。URL にポート番号を含めることはできません。

  2. OIDC ID プロバイダーの URL の末尾に /.well-known/openid-configuration を追加して、プロバイダーの公開されている設定ドキュメントとメタデータを確認します。OpenID Connect プロバイダー検出エンドポイント URL から取得できるプロバイダーの設定ドキュメントとメタデータを含む JSON 形式の検出ドキュメントが必要です。

  3. プロバイダーの設定情報に次の値が含まれていることを確認します。openid-configuration にこれらのフィールドのいずれかがない場合は、検出ドキュメントを更新する必要があります。このプロセスは ID プロバイダーによって異なる可能性があるため、IdP のドキュメントに従ってこのタスクを完了してください。

    • issuer: ご使用のドメインの URL。

    • jwks_uri: IAM がパブリックキーを取得する JSON Web Key Set (JWKS) エンドポイント。ご使用の ID プロバイダーで、openid-configuration に JSON Web Key Set (JWKS) エンドポイントを含んでいる必要があります。この URI は、ID プロバイダーから署名付きトークンを検証するために使用されるパブリックキーを取得する場所を定義します。

    • claims_supported: IdP からの OIDC 認証レスポンスに、フェデレーションユーザーのアクセス許可を確認するために AWS が IAM ポリシーで使用する必須属性が含まれていることを確認するのに役立つユーザーに関する情報。クレームに使用できる IAM 条件キーのリストについては、「OIDC AWS フェデレーションで使用できるキー」を参照してください。

      • aud: SON Web Tokens (JWTs) で IdP の問題が発生する audience クレーム値を決定する必要があります。audience (aud) クレームはアプリケーション固有であり、トークンの受取人を識別します。OpenID Connect プロバイダーにモバイルアプリまたはウェブアプリを登録すると、アプリケーションを識別するクライアント ID が確立されます。クライアント ID は、認証のために aud クレームで渡されるアプリケーションの一意の識別子です。aud クレームは、IAM OIDC ID プロバイダーを作成するときに Audience 値と一致する必要があります。

      • iat: クレームには、ID トークンが発行された時刻を表す iat の値を含める必要があります。

      • iss: ID プロバイダーの URL。URL は https:// で始まり、IAM に提供されるプロバイダー URL と呼応している必要があります。OIDC 標準によって、パスコンポーネントは許可されますが、クエリパラメータは許可されません。通常、URL は https://server.example.org や https://example.com などのホスト名のみで構成されます。URL にポート番号を含めることはできません。

    • response_types_supported: id_token

    • subject_types_supported: public

    • id_token_signing_alg_values_supported: RS256

    注記

    以下の例では、custom のような追加クレームを含めることができますが、AWS STS はクレームを無視します。

    { "issuer": "https://example-domain.com", "jwks_uri": "https://example-domain.com/jwks/keys", "claims_supported": [ "aud", "iat", "iss", "name", "sub", "custom" ], "response_types_supported": [ "id_token" ], "id_token_signing_alg_values_supported": [ "RS256" ], "subject_types_supported": [ "public" ] }

OIDC プロバイダーの作成と管理 (コンソール)

AWS Management Console で IAM OIDC ID プロバイダーを作成および管理するには、次の手順に従います。

重要

Google、Facebook、または Amazon Cognito の OIDC ID プロバイダーを使用している場合は、この手順を使用して別の IAM ID プロバイダーを作成しないでください。これらの OIDC ID プロバイダーは、AWS にすでに組み込まれており、使用できます。代わりに、「OpenID Connect フェデレーション用のロールを作成する (コンソール)」の手順に従って ID プロバイダーの新しいロールを作成します。

IAM OIDC ID プロバイダーを作成するには (コンソール)
  1. IAM OIDC ID プロバイダーを作成する前に、アプリケーションを IdP に登録してクライアント ID を受け取る必要があります。クライアント ID (対象者とも呼ばれます) は、アプリを IdP に登録したときに発行されるアプリの一意の識別子です。クライアント ID を取得する方法の詳細については、IdP のドキュメントを参照してください。

    注記

    AWS は、JSON Web Key Set (JWKS) エンドポイントの TLS 証明書を検証する信頼されたルート認証機関 (CA) のライブラリを使用して、OIDC ID プロバイダー (IdP) との通信を保護します。ご使用の OIDC IdP がこれらの信頼された CA のいずれかによる署名を受けていない証明書を信頼する場合、その IdP の設定で指定されたサムプリントを使用して通信を保護します。TLS 証明書を取得できない場合、または TLS v1.3 が必要な場合は、AWS はサムプリントの検証にフォールバックします。

  2. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  3. ナビゲーションペインで、[Identity providers] (ID プロバイダ) を選択し、[Add provider] (プロバイダを追加) を選択します。

  4. [Configure provider] (プロバイダーの設定) で、[OpenID Connect] を選択します。

  5. [プロバイダーの URL] には IdP の URL を入力します。URL は次の制限に準拠する必要があります。

    • URL では大文字と小文字は区別されます。

    • URL は https:// で始まる必要があります。

    • URL にポート番号を含めることはできません。

    • AWS アカウント 内で、各 IAM OIDC ID プロバイダーは一意の URL を使用する必要があります。AWS アカウント で OpenID Connect プロバイダーで既に使用されている URL を送信しようとすると、エラーが発生します。

  6. [対象者] には、IdP に登録して ステップ 1 で受け取ったアプリケーションのクライアント ID を入力します。このアプリケーションは AWS に対するリクエストを実行します。この IdP のクライアント ID (対象者) が他にも存在する場合は、後でプロバイダーの詳細ページで追加できます。

    注記

    IdP JWT トークンに azp クレームが含まれている場合は、Audience 値としてこの値を入力します。

    OIDC ID プロバイダーがトークンに audazp の両方のクレームを設定している場合、AWS STS は azp クレーム内の値を aud クレームとして使用します。

  7. (オプション) [Add tags (タグの追加)] では、キーバリューのペアを追加して IdP の特定と整理を行うことができます。タグを使用して、AWS リソースへのアクセスを制御することもできます。IAM OIDC ID プロバイダーのタグ付けの詳細については、「OpenID Connect (OIDC) ID プロバイダーにタグ付けする」を参照してください。[タグを追加] を選択します。タグキーバリューのペアごとに値を入力します。

  8. 入力した情報を確認します。完了したら、[Add provider] (プロバイダーを追加) を選択します。IAM は、OIDC IdP サーバー証明書の上位中間 CA サムプリントを取得して使用し、IAM OIDC ID プロバイダーを作成しようとします。

    注記

    OIDC ID プロバイダーの証明書チェーンは、ドメインまたは発行者の URL で始まり、中間証明書が続いた後、ルート証明書で終わる必要があります。証明書チェーンの順序が異なる場合、または証明書の重複や追加が含まれる場合は、署名の不一致エラーが表示され、STS は JSON ウェブトークン (JWT) の検証に失敗します。エラーを解決するには、サーバーから返されたチェーン内の証明書の順序を修正します。証明書チェーン標準の詳細については、RFC Series ウェブサイトの RFC 5246 の certificate_list を参照してください。

  9. ID プロバイダーに IAM ロールを割り当てて、ID プロバイダーによって管理される外部ユーザー ID にアカウント内の AWS リソースへのアクセス許可を与えます。ID フェデレーション用のロールの作成の詳細については、「サードパーティー ID プロバイダー (フェデレーション) 用のロールを作成する」をご参照ください。

    注記

    ロール信頼ポリシーで使用される OIDC IdP は、そのロール信頼ポリシーを信頼するロールと同じアカウントにある必要があります。

IAM OIDC ID プロバイダーのサムプリントを追加または削除するには (コンソール)
注記

AWS は、JSON Web Key Set (JWKS) エンドポイントの TLS 証明書を検証する信頼されたルート認証機関 (CA) のライブラリを使用して、OIDC ID プロバイダー (IdP) との通信を保護します。ご使用の OIDC IdP がこれらの信頼された CA のいずれかによる署名を受けていない証明書を信頼する場合、その IdP の設定で指定されたサムプリントを使用して通信を保護します。TLS 証明書を取得できない場合、または TLS v1.3 が必要な場合は、AWS はサムプリントの検証にフォールバックします。

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで、[Identity providers (ID プロバイダ)] を選択します。その後、更新する IAM ID プロバイダーの名前を選択します。

  3. [エンドポイント検証] タブを選択し、[サムプリント] セクションで [管理] を選択します。新しいサムプリント値を入力するには、[Add thumbprint] (サムプリントを追加) を選択します。サムプリントを削除するには、削除するサムプリントの横にある [Remove] (削除) を選択します。

    注記

    IAM OIDC ID プロバイダーには少なくとも 1 つのサムプリントが必要であり、最大 5 つのサムプリントを指定できます。

    完了したら、[Save changes] (変更を保存) を選択します。

IAM OIDC ID プロバイダーの対象者を追加するには (コンソール)
  1. ナビゲーションペインで、[Identity providers] (ID プロバイダー) を選択し、更新する IAM ID プロバイダーの名前を選択します。

  2. [Audiences] (対象者) セクションで [Actions] (アクション) を選択し、[Add audience] (対象者を追加) を選択します。

  3. IdP に登録して ステップ 1 で受け取ったアプリケーションのクライアント ID を入力します。このアプリケーションは AWS に対するリクエストを実行します。その後、[Add audiences] (対象者を追加) を選択します。

    注記

    IAM OIDC ID プロバイダーには少なくとも 1 名の閲覧者が必要であり、最大 100 名まで指定できます。

IAM OIDC ID プロバイダーの対象者を削除するには (コンソール)
  1. ナビゲーションペインで、[Identity providers] (ID プロバイダー) を選択し、更新する IAM ID プロバイダーの名前を選択します。

  2. [Audiences] (対象者) セクションで、削除する対象者の横にあるラジオボタンを選択し、[Actions] (アクション) を選択します。

  3. [Remove audience] (対象者を削除) を選択します。新しいウィンドウが開きます。

  4. 対象者を削除すると、対象者とフェデレートする ID は対象者に関連付けられたロールを引き受けることができません。ウィンドウで、警告を読み、フィールドに単語 remove を入力して対象者を削除することを確認します。

  5. 対象者を削除するには、[Remove] (削除) を選択します。

IAM OIDC ID プロバイダーを削除するには (コンソール)
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで、[Identity providers (ID プロバイダ)] を選択します。

  3. 削除する IAM ID プロバイダーの横にあるチェックボックスをオンにします。新しいウィンドウが開きます。

  4. フィールドに単語 delete を入力して、プロバイダーを削除することを確認します。その後、[Delete] (削除) をクリックします。

IAM OIDC ID プロバイダーの作成と管理 (AWS CLI)

以下の AWS CLI コマンドを使用して IAM OIDC ID プロバイダーを作成および管理できます。

IAM OIDC ID プロバイダーを作成するには (AWS CLI)
  1. (オプション) AWS アカウントのすべての IAM OIDC ID プロバイダーを一覧表示するには、次のコマンドを実行します。

  2. 新しい IAM OIDC ID プロバイダーを作成するには、次のコマンドを実行します。

既存の IAM OIDC ID プロバイダー (AWS CLI) のサーバー証明書のサムプリントのリストを更新するには
既存の IAM OIDC ID プロバイダー (AWS CLI) にタグを付けるには
既存の IAM OIDC ID プロバイダー (AWS CLI) のタグを一覧表示するには
IAM OIDC ID プロバイダー (AWS CLI) のタグを削除するには
既存のIAM OIDC ID プロバイダーのクライアント ID を追加または削除するには (AWS CLI)
  1. (オプション) AWS アカウントのすべての IAM OIDC ID プロバイダーのリストを取得するには、次のコマンドを実行します。

  2. (オプション) IAM OIDC ID プロバイダーの詳細情報を取得するには、次のコマンドを実行します。

  3. 既存の IAM OIDC ID プロバイダーに新しいクライアント ID を追加するには、次のコマンドを実行します。

  4. 既存の IAM OIDC ID プロバイダーからクライアント ID を削除するには、次のコマンドを実行します。

IAM OIDC ID プロバイダーを削除するには (AWS CLI)
  1. (オプション) AWS アカウントのすべての IAM OIDC ID プロバイダーのリストを取得するには、次のコマンドを実行します。

  2. (オプション) IAM OIDC ID プロバイダーの詳細情報を取得するには、次のコマンドを実行します。

  3. IAM OIDC ID プロバイダーを削除するには、次のコマンドを実行します。

OIDC ID プロバイダーの作成と管理 (AWS API)

以下の IAM API コマンドを使用して OIDC プロバイダーを作成および管理できます。

IAM OIDC ID プロバイダーを作成するには (AWS API)
  1. (オプション) AWS アカウントのすべての IAM OIDC ID プロバイダーのリストを取得するには、次のオペレーションを呼び出します。

  2. 新しい IAM OIDC ID プロバイダーを作成するには、次のオペレーションを呼び出します。

既存の IAM OIDC ID プロバイダーのサーバー証明書のサムプリントのリストを更新するには (AWS API)
  • IAM OIDC ID プロバイダーのサーバー証明書のサムプリントのリストを更新するには、次のオペレーションを呼び出します。

既存の IAM OIDC ID プロバイダーにタグを付けるには (AWS API)
  • 既存の IAM OIDC ID プロバイダーにタグを付けるには、次のオペレーションを呼び出します。

既存の IAM OIDC ID プロバイダーのタグを一覧表示するには (AWS API)
  • 既存の IAM OIDC ID プロバイダーのタグを一覧表示するには、次のオペレーションを呼び出します。

既存の IAM OIDC ID プロバイダーのタグを削除するには (AWS API)
  • 既存の IAM OIDC ID プロバイダーのタグを削除するには、次のオペレーションを呼び出します。

既存の IAM OIDC ID プロバイダーのクライアント ID を追加または削除するには (AWS API)
  1. (オプション) AWS アカウントのすべての IAM OIDC ID プロバイダーのリストを取得するには、次のオペレーションを呼び出します。

  2. (オプション) IAM OIDC ID プロバイダーの詳細情報を取得するには、次のオペレーションを呼び出します。

  3. 既存の IAM OIDC ID プロバイダーに新しいクライアント ID を追加するには、次のオペレーションを呼び出します。

  4. 既存の IAM OIDC ID プロバイダーからクライアント ID を削除するには、次のオペレーションを呼び出します。

IAM OIDC ID プロバイダーを削除するには (AWS API)
  1. (オプション) AWS アカウントのすべての IAM OIDC ID プロバイダーのリストを取得するには、次のオペレーションを呼び出します。

  2. (オプション) IAM OIDC ID プロバイダーの詳細情報を取得するには、次のオペレーションを呼び出します。

  3. IAM OIDC ID プロバイダーを削除するには、次のオペレーションを呼び出します。