23.3. SAML 認証


SAML を使用すると、アイデンティティープロバイダー (IdP - シングルサインオンサービスを提供するサーバーシステム) とサービスプロバイダー (今回の場合は Automation Controller) の間で認証および認可データを交換することができます。

Automation Controller は、SAML と通信して Automation Controller ユーザーを認証 (作成/ログイン/ログアウト) するように設定できます。ユーザー、チーム、および組織のメンバーシップは、Automation Controller に対する SAML の応答に埋め込むことができます。

SAML トポロジー

次の手順では、サービスプロバイダーとしての Automation Controller について説明します。RHSSO (keycloak) を通じてユーザーを認証するには、Red Hat Single Sign On Integration with the Automation Controller を参照してください。

手順

  1. ナビゲーションパネルから Settings を選択します。
  2. 認証 オプションのリストから SAML 設定を 選択してください。

    注記

    SAML アサーションコンシューマーサービス (ACS)URLSAML サービスプロバイダーメタデータ URL の フィールドは、あらかじめ入力されており、編集できません。IdP 管理者に連絡し、これらのフィールドに入力されている情報を提供してください。

  3. 編集を クリックし、SAML サービスプロバイダーエンティティー ID を、その他のシステム設定 画面にある Automation Controller ホストフィールドの ベース URL と同じ値に設定します。API を介して /api/v2/settings/systemCONTROLLER_BASE_URL 変数で確認できます。エンティティー ID は、 個々の Automation Controller クラスターノードのいずれかに設定できますが、サービスプロバイダーの URL に設定するのが推奨されます。ロードバランサーを使用している場合は、ベース URL が その FQDN と一致していることを確認してください。

    注記

    ベース URL は、クラスター内の各ノードごとに異なります。多くの場合、ロードバランサーは Automation Controller クラスターノードの手前に配置され、単一のエントリーポイントである Automation Controller クラスター FQDN を提供します。SAML サービスプロバイダーは、発信接続を確立し、SAML サービスプロバイダーエンティティー ID で設定した Automation Controller クラスターノードまたは Automation Controller クラスター FQDN にルーティングできる必要があります。

    次の例では、サービスプロバイダーは Automation Controller クラスターであるため、ID は Automation Controller クラスター FQDN に設定されます。

    SAML サービスプロバイダー
  4. Ansible クラスターのサーバー証明書を作成します。通常、Ansible クラスターが設定されている場合、Automation Controller ノードは HTTP トラフィックのみを処理するように設定され、ロードバランサーは SSL 終端ポイントになります。この場合、SSL 証明書は個々の Automation Controller クラスターノードではなく、ロードバランサーに必要です。個々の Automation Controller ノードごとに SSL を有効または無効にできますが、SSL 終端ロードバランサーを使用する場合は無効にする必要があります。証明書の定期的な更新を回避するには、有効期限のない自己署名証明書を使用します。こうすることで、証明書の更新を忘れた場合でも認証が失敗しません。

    注記

    SAML サービスプロバイダー公開証明書 フィールドには、-----BEGIN CERTIFICATE----------END CERTIFICATE----- を含む証明書全体を含める必要があります。

    証明書で CA バンドルを使用する場合には、このフィールドにバンドル全体の情報を追加してください。

    -----BEGIN CERTIFICATE-----
    ... cert text ...
    -----END CERTIFICATE-----

  5. コントローラーがサービスプロバイダーとして使用するためのオプションの秘密鍵を作成し、SAML サービスプロバイダー秘密鍵 フィールドに入力します。

    -----BEGIN PRIVATE KEY-----
    ... key text ...
    -----END PRIVATE KEY-----

  6. SSO プロセス中に、SAML サービスプロバイダー組織情報 フィールドに、Automation Controller クラスターに関する詳細情報を IdP に提供してください。

    {
      "en-US": {
        "url": "http://www.example.com",
        "displayname": "Example",
        "name": "example"
      }
    }
    重要

    Automation Controller 内で SAML を正しく設定するには、これらのフィールドに入力する必要があります。

  7. SAML サービスプロバイダーの技術担当者連絡先 欄に、IdP(アイデンティティープロバイダー) の技術担当者連絡先情報を入力してください。このフィールドの内容は削除しないでください。

    {
    "givenName": "Some User",
    "emailAddress": "suser@example.com"
    }
  8. SAML サービスプロバイダーサポート連絡先 欄に、IdP のサポート連絡先情報を入力してください。このフィールドの内容は削除しないでください。

    {
    "givenName": "Some User",
    "emailAddress": "suser@example.com"
    }
  9. SAML 対応アイデンティティープロバイダー フィールドには、リストされている各 ID プロバイダーへの接続方法に関する情報を入力してください。次の例は、Automation Controller が想定する SAML 属性を示しています。

    Username(urn:oid:0.9.2342.19200300.100.1.1)
    Email(urn:oid:0.9.2342.19200300.100.1.3)
    FirstName(urn:oid:2.5.4.42)
    LastName(urn:oid:2.5.4.4)

    これらの属性が不明な場合は、既存の SAML 属性を ユーザー名メールアドレス にマッピングします。

    IdP ごとに必要なキーを設定します。

    • attr_user_permanent_id - ユーザーの一意の識別子。IdP から送信された属性のいずれかと一致するように設定できます。SAML:nameid 属性が Automation Controller ノードに送信された場合、通常は name_id に設定されます。ユーザー名属性またはカスタムの一意の識別子にすることができます。
    • entity_id - IdP 管理者によって提供されるエンティティー ID。管理者は Automation Controller の SAML プロファイルを作成し、一意の URL を生成します。
    • url - シングルサインオン (SSO) が有効になったときに、Automation Controller がユーザーをリダイレクトするシングルサインオン (SSO)URL。
    • x509_cert - IdP 管理者によって提供され、IdP 上で作成された SAML プロファイルから生成された証明書。---BEGIN CERTIFICATE------END CERTIFICATE--- のヘッダーを削除し、証明書を 1 つの連続した文字列として入力します。

      複数の SAML IdP がサポートされています。一部の IdP は、デフォルトの OID とは異なる属性名を使用してユーザーデータを提供する場合があります。SAML NameID は、一部の IdP が使用する特別な属性で、サービスプロバイダー (Automation Controller クラスター) に一意のユーザー識別子を伝えるために使用されます。使用する場合は、次の例に示すように、attr_user_permanent_idname_id に設定してください。他の属性名は IdP ごとにオーバーライドできます。

      "myidp": {
        "entity_id": "https://idp.example.com",
        "url": "https://myidp.example.com/sso",
        "x509cert": ""
      },
      "onelogin": {
        "entity_id": "https://app.onelogin.com/saml/metadata/123456",
        "url": "https://example.onelogin.com/trust/saml2/http-post/sso/123456",
      "x509cert": "",
        "attr_user_permanent_id": "name_id",
        "attr_first_name": "User.FirstName",
        "attr_last_name": "User.LastName",
        "attr_username": "User.email",
        "attr_email": "User.email"
        }
      }
      警告

      別のユーザー (SAML 以外のユーザーを含む) とメールアドレスを共有する SAML ユーザーを作成しないでください。そのようなユーザーを作成すると、アカウントがマージされます。システム管理者の場合も同じ動作となることに注意してください。したがって、システム管理者と同じメールアドレスを使用して SAML ログインを行うと、システム管理者権限でのログインが可能になります。これを回避するには、SAML マッピングに基づいて管理者権限を削除 (または追加) します。

  10. オプション: SAML 組織マップ を提供してください。詳細は、組織マッピング および チームマッピング を参照してください。
  11. ユーザーが Automation Controller にログインするときに、ユーザーに関連付けるチームおよび組織のメンバーシップを含む特定の属性を検索するように Automation Controller を設定できます。属性名は、SAML 組織属性マッピングフィールドSAML チーム属性マッピング フィールドで定義されます。

    SAML 組織属性マッピングの例

    以下は、ユーザーの組織メンバーシップを属性 member-of に埋め込む SAML 属性の例です。

    <saml2:AttributeStatement>
        <saml2:Attribute FriendlyName="member-of" Name="member-of"
    NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
            <saml2:AttributeValue>Engineering</saml2:AttributeValue>
            <saml2:AttributeValue>IT</saml2:AttributeValue>
            <saml2:AttributeValue>HR</saml2:AttributeValue>
            <saml2:AttributeValue>Sales</saml2:AttributeValue>
        </saml2:Attribute>
        <saml2:Attribute FriendlyName="admin-of" Name="admin-of"
    NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
            <saml2:AttributeValue>Engineering</saml2:AttributeValue>
        </saml2:Attribute>
    </saml2:AttributeStatement>

    対応する Automation Controller の設定は次のとおりです。

    {
      "saml_attr": "member-of",
      "saml_admin_attr": "admin-of",
      "remove": true,
      "remove_admins": false
    }
    • saml_attr: 組織配列を見つけて 削除できる SAML 属性名。ユーザーを組織リストに追加する前に、すべての組織からユーザーを削除するには、true に設定します。SAML 属性でユーザーを組織に追加しながら、ユーザーを現在の組織に留めておくには、removefalse に設定します。
    • saml_admin_attr: saml_attr 属性と同様ですが、組織メンバーシップを伝える代わりに、この属性は管理者組織権限を伝えます。

      SAML チーム属性マッピングの例

      次の例は、リストにチームメンバーシップを含む別の SAML 属性です。

      <saml:AttributeStatement>
           <saml:Attribute
              xmlns:x500="urn:oasis:names:tc:SAML:2.0:profiles:attribute:X500"
              x500:Encoding="LDAP"
              NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
              Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.1"
              FriendlyName="eduPersonAffiliation">
              <saml:AttributeValue
                  xsi:type="xs:string">member</saml:AttributeValue>
              <saml:AttributeValue
                  xsi:type="xs:string">staff</saml:AttributeValue>
              </saml:Attribute>
      </saml:AttributeStatement>
      {
          "saml_attr": "eduPersonAffiliation",
          "remove": true,
          "team_org_map": [
          {
              "team": "member",
              "organization": "Default1"
          },
          {
              "team": "staff",
              "organization": "Default2"
          }
        ]
      }
    • saml_attr: チーム配列が格納されている SAML 属性名。
    • remove: ユーザーをチームリストに追加する前に、すべてのチームからユーザーを削除するには、remove をtrue に設定します。SAML 属性でユーザーをチームに追加する際に、ユーザーを現在のチームに留めておくには、removefalse に設定します。
    • team_org_map: コントローラーチームから Automation Controller 組織へのマッピングを定義する 、{ "team": "<AWX チーム名 >"、"organization": "<AWX 組織名 >" } の形式のディクショナリーの配列。Automation Controller の複数の組織に同じ名前のチームが存在できるため、このマッピングが必要になります。このマッピングがないと、SAML 属性にリストされているチームがどの組織に属しているか曖昧になります。

      SAML チーム属性マッピング フィールドでは、チームと組織の両方を上書きするエイリアスを作成できます。この方法は、次の例に示すように、SAML バックエンドが複雑なグループ名を送信する場合に役立ちます。

      {
       "remove": false,
       "team_org_map": [
        {
         "team": "internal:unix:domain:admins",
         "organization": "Default",
         "team_alias": "Administrators"
        },
        {
         "team": "Domain Users",
         "organization_alias": "OrgAlias",
         "organization": "Default"
        }
       ],
       "saml_attr": "member-of"
      }

      ユーザーが認証されると、Automation Controller は組織とチームのエイリアスを作成します。

  12. オプション: SAML チームマップ フィールドにチームメンバーシップのマッピングを指定します。詳細は、組織マッピング および チームマッピング を参照してください。
  13. オプション: SAML セキュリティー設定 フィールドにセキュリティー設定を入力してください。このフィールドは、API の SOCIAL_AUTH_SAML_SECURITY_CONFIG フィールドと同等のものです。

    // Indicates whether the <samlp:AuthnRequest> messages sent by this SP
    // will be signed. [Metadata of the SP will offer this info]
    
    "authnRequestsSigned": false,
    
    // Indicates a requirement for the <samlp:Response>, <samlp:LogoutRequest>
    // and <samlp:LogoutResponse> elements received by this SP to be signed.
    
    "wantMessagesSigned": false,
    
    // Indicates a requirement for the <saml:Assertion> elements received by
    // this SP to be signed. [Metadata of the SP will offer this info]
    
    "wantAssertionsSigned": false,

    詳細は、OneLogin の SAML Python Toolkit を参照してください。

    Automation Controller は、ユーザーが SAML 経由でログインする際に python-social-auth ライブラリーを使用します。このライブラリーは、次の 2 つのオプションフィールド、SAML サービスプロバイダーの追加設定データSAML IDP から extra_data 属性へのマッピングの 設定を利用可能にするために、python-saml ライブラリーに依存しています。

    • SAML サービスプロバイダーの追加設定データ フィールドは、API の SOCIAL_AUTH_SAML_SP_EXTRA に相当します。詳細は、OneLogin の SAML Python ツールキット を参照して、有効なサービスプロバイダーエクストラ (SP_EXTRA) パラメーターについて確認してください。
    • SAML IDP から extra_data 属性へのマッピング フィールドは、API の SOCIAL_AUTH_SAML_EXTRA_DATA に相当します。詳細は、Python の SAML に関する Advanced Settings ドキュメントを参照してください。
    • SAML ユーザーフラグ属性マッピング フィールドを使用すると、SAML ロールと属性を特別なユーザーフラグにマッピングできます。このフィールドでは次の属性が有効です。

      • is_superuser_role: ユーザーにスーパーユーザーフラグを付与する 1 つ以上の SAML ロールを指定します。
      • is_superuser_attr: ユーザーにスーパーユーザーフラグを付与する SAML 属性を指定します。
      • is_superuser_value: ユーザーがスーパーユーザーであるために必要な、is_superuser_attr に必要な 1 つ以上の値を指定します。
      • remove_superusers: ユーザーのスーパーユーザーフラグを削除するかどうかを示すブール値。デフォルトは true です。
      • is_system_auditor_role: ユーザーにシステム監査フラグを付与する 1 つ以上の SAML ロールを指定します。
      • is_system_auditor_attr: ユーザーにシステム監査フラグを付与する SAML 属性を指定します。
      • is_system_auditor_value: ユーザーがシステム監査者となるために必要な、is_system_auditor_attr に必要な 1 つ以上の値を指定します。
      • remove_system_auditors: システム監査 フラグをユーザーから削除するかどうかを示すブール値。デフォルトは true です。

        ロールフィールド フィールドはリストであり、OR 論理に基づいています。2 つのロール ["Role 1", "Role 2"] を指定し、SAML ユーザーがいずれかのロールを持っている場合、このロジックでは、ユーザーがフラグに必要なロールを持っていると見なされます。これは フィールドでも同じで、[ " 値 1"、" 値 2"] と指定し、SAML ユーザーの属性にいずれかの値がある場合、ロジックは属性値が一致したと判断します。

        スーパーユーザー または システム監査人 のいずれかに対して ロール属性を 指定した場合、属性 の設定がロールの設定よりも優先されます。システム管理者とシステム監査者のロールは、SAML ユーザーのログイン時に評価されます。SAML 設定ではなく UI を介して SAML ユーザーにこれらのロールのいずれかを付与した場合、削除 フラグが false に設定されていない限り、ロールはユーザーの次回のログイン時に削除されます。remove フラグが false の場合、SAML アダプターはユーザーから対応するフラグを削除することは決してできません。次の表に、ロジックがどのように機能するかを示します。

        Expand
        1 つ以上のロールを持つ属性を 持つ1 つ以上の 属性値 を持つフラグを削除する前のフラグフラグが立てられています

        いいえ

        いいえ

        該当なし

        True

        False

        いいえ

        いいえ

        いいえ

        該当なし

        False

        False

        いいえ

        いいえ

        いいえ

        該当なし

        True

        True

        いいえ

        いいえ

        いいえ

        該当なし

        False

        True

        はい

        はい

        いいえ

        該当なし

        True

        False

        はい

        はい

        いいえ

        該当なし

        False

        False

        はい

        はい

        いいえ

        該当なし

        True

        True

        はい

        はい

        いいえ

        該当なし

        False

        False

        はい

        いいえ

        はい

        はい

        True

        True

        はい

        いいえ

        はい

        はい

        True

        False

        はい

        いいえ

        はい

        はい

        False

        False

        はい

        いいえ

        はい

        はい

        True

        True

        はい

        いいえ

        はい

        はい

        False

        True

        はい

        いいえ

        はい

        いいえ

        True

        False

        いいえ

        いいえ

        はい

        いいえ

        False

        False

        いいえ

        いいえ

        はい

        いいえ

        True

        True

        いいえ

        いいえ

        はい

        いいえ

        False

        True

        はい

        いいえ

        はい

        未設定

        True

        False

        はい

        いいえ

        はい

        未設定

        False

        False

        はい

        いいえ

        はい

        未設定

        True

        True

        はい

        いいえ

        はい

        未設定

        False

        True

        はい

        はい

        はい

        はい

        True

        False

        はい

        はい

        はい

        はい

        False

        False

        はい

        はい

        はい

        はい

        True

        True

        はい

        はい

        はい

        はい

        False

        True

        はい

        はい

        はい

        いいえ

        True

        False

        いいえ

        はい

        はい

        いいえ

        False

        False

        いいえ

        はい

        はい

        いいえ

        True

        True

        いいえ

        はい

        はい

        いいえ

        False

        True

        はい

        はい

        はい

        未設定

        True

        False

        はい

        はい

        はい

        未設定

        False

        False

        はい

        はい

        はい

        未設定

        True

        True

        はい

        はい

        はい

        未設定

        False

        True

        はい

        SAML ユーザーが Automation Controller に対して認証されるたびに、これらのチェックが実行され、必要に応じてユーザーフラグが変更されます。UI 内で SAML ユーザーに対して システム管理者 または システム監査役 が設定されている場合、SAML アダプターは前述のルールに基づいて UI の設定を上書きします。SAML ユーザーがログインしたときに、SAML ユーザーのユーザーフラグが削除されないようにしたい場合は、remove_ フラグを false に設定できます。削除 フラグが false に設定されている場合、UI、API、または SAML アダプターを介して true に設定されたユーザーフラグは削除されません。ただし、ユーザーがフラグを持っていない場合、前述のルールによってフラグを追加する必要があると判断された場合は、フラグが 偽で あっても追加されます。

        {
            "is_superuser_attr": "blueGroups",
            "is_superuser_role": ["is_superuser"],
            "is_superuser_value": ["cn=My-Sys-Admins,ou=memberlist,ou=mygroups,o=myco.com"],
            "is_system_auditor_attr": "blueGroups",
            "is_system_auditor_role": ["is_system_auditor"],
            "is_system_auditor_value": ["cn=My-Auditors,ou=memberlist,ou=mygroups,o=myco.com"]
        }

  14. Save をクリックします。

検証

認証が正しく設定されていることを確認するには、SAML サービスプロバイダーメタデータ URL に含まれる自動生成された URL をブラウザーに読み込んでください。XML 出力が得られない場合は、正しく設定されていません。

あるいは、Automation Controller からログアウトします。ログイン画面に、Automation Controller への別のログイン方法として SAML ロゴが表示されます。

SAML のロゴ

23.3.1. 透過的な SAML ログインの設定

透過的なログインを機能させるには、まず IdP-initiated ログインを機能させる必要があります。

手順

  1. IdP の RelayState を、SAML 有効アイデンティティープロバイダー フィールドにある IdP 定義のキーに設定します。
  2. この設定が正しく機能している場合は、設定 メニューの その他の認証 設定ウィンドウにある ログインリダイレクトオーバーライド URL フィールドを使用して、ログインしていないユーザーのリダイレクト URL を、デフォルトの Automation Controller のログインページ以外の場所に指定します。透過的な SAML ログインを行うには、次の例に示すように、これを /sso/login/saml/?idp=<name-of-your-idp> に設定する必要があります。

    SAML ログインの設定
    注記

    この例は一般的な IdP 形式を示していますが、特定のケースではこの形式は正しくない可能性があります。透過的なリダイレクト URL はすべての IdP で同じではないため、IdP に問い合わせて正しい URL を取得することが必要な場合があります。

  3. 透過型 SAML ログインを設定した後、ローカル認証情報または別の SSO を使用してログインするには、直接 https://<your-tower-server>/login にアクセスしてください。これにより、SSO 認証オプションを含む標準の Automation Controller ログインページが表示され、設定した方法でログインできるようになります。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る