18.4. アイデンティティープロバイダーの設定
18.4.1. Okta Identity Cloud を SAML 2.0 プロバイダーとして設定
Okta は、Red Hat Advanced Cluster Security for Kubernetes (RHACS) のシングルサインオン (SSO) プロバイダーとして使用できます。
18.4.1.1. Okta アプリの作成
Okta を Red Hat Advanced Cluster Security for Kubernetes の SAML 2.0 プロバイダーとして使用する前に、Okta アプリを作成する必要があります。
Okta の Developer Console はカスタム SAML 2.0 アプリケーションの作成をサポートしていません。Developer Console を使用している場合は、最初に Admin Console (Classic UI) に切り替える必要があります。切り替えるには、ページの左上にある Developer Console をクリックして、Classic UI を選択します。
前提条件
- Okta ポータルの管理者権限を持つアカウントが必要です。
手順
- Okta ポータルで、メニューバーから Applications を選択します。
- Add Application をクリックし、Create New App を選択します。
- Create a New Application Integration ダイアログボックスで、プラットフォームを Web のままにし、ユーザーにサインインするプロトコルに SAML 2.0 を選択します。
- Create をクリックします。
- General Settings ページで、App name フィールドにアプリの名前を入力します。
- Next をクリックします。
SAML Settings ページで、次のフィールドに値を設定します。
Single Sign-On URL
-
https://<RHACS_portal_hostname>/sso/providers/saml/acs
を指定します。 - Use this for Recipient URL and Destination URL オプションをオンのままにします。
- RHACS ポータルにさまざまな URL でアクセスできる場合は、Allow this app to request other SSO URLs オプションをオンにして、指定した形式を使用して代替 URL を追加することでそれらを追加できます。
-
Audience URI (SP Entity ID)
- 値を RHACS または任意の別の値に設定します。
- 選択した値を覚えておいてください。Red Hat Advanced Cluster Security for Kubernetes を設定するときに、この値が必要になります。
Attribute Statements
- 少なくとも 1 つの属性ステートメントを追加する必要があります。
Red Hat は、email 属性の使用を推奨します。
- Name: email
- Format: 指定なし
- Value: user.email
- 続行する前に、少なくとも 1 つの Attribute Statement が設定されていることを確認してください。
- Next をクリックします。
- Feedback ページで、該当するオプションを選択します。
- 適切な App type を選択します。
- Finish をクリックします。
設定が完了すると、新しいアプリの サインオン 設定ページにリダイレクトされます。黄色のボックスには、Red Hat Advanced Cluster Security for Kubernetes を設定するのに必要な情報へのリンクが含まれています。
アプリを作成したら、Okta ユーザーをこのアプリケーションに割り当てます。Assignments タブに移動し、Red Hat Advanced Cluster Security for Kubernetes にアクセスできる個々のユーザーまたはグループのセットを割り当てます。たとえば、グループ Everyone を割り当てて、組織内のすべてのユーザーが Red Hat Advanced Cluster Security for Kubernetes にアクセスできるようにします。
18.4.1.2. SAML 2.0 アイデンティティープロバイダーの設定
このセクションの手順を使用して、Security Assertion Markup Language (SAML) 2.0 ID プロバイダーを Red Hat Advanced Cluster Security for Kubernetes (RHACS) と統合します。
前提条件
- RHACS で ID プロバイダーを設定する権限が必要です。
- Okta ID プロバイダーの場合、RHACS 用に設定された Okta アプリが必要です。
手順
-
RHACS ポータルで、Platform Configuration
Access Control に移動します。 - Create auth provider をクリックし、ドロップダウンリストから SAML 2.0 を選択します。
- Name フィールドに、この認証プロバイダーを識別する名前を入力します。たとえば、Okta や Google などです。統合名は、ユーザーが適切なサインインオプションを選択できるように、ログインページに表示されます。
-
ServiceProvider issuer フィールドに、Okta で
Audience URI
またはSP Entity ID
として使用している値、または他のプロバイダーで同様の値を入力します。 Configuration のタイプを選択します。
- Option 1: Dynamic Configuration: このオプションを選択した場合は、IdP Metadata URL を入力するか、ID プロバイダーコンソールから利用可能な Identity Provider metadata の URL を入力します。設定値は URL から取得します。
Option 2: Static Configuration: Okta コンソールの View Setup Instructions リンクから必要な静的フィールドをコピーするか、他のプロバイダーの場合は同様の場所にコピーします。
- IdP 発行者
- IdP SSO URL
- 名前 ID 形式
- IdP 証明書 (PEM)
SAML を使用して RHACS にアクセスするユーザーに 最小アクセスロール を割り当てます。
ヒントセットアップの完了時に、最小アクセスルール を 管理者 に設定します。後で、Access Control ページに戻って、ID プロバイダーのユーザーメタデータに基づいて、より調整されたアクセスルールを設定できます。
- Save をクリックします。
SAML ID プロバイダーの認証応答が次の条件を満たしている場合:
-
NotValidAfter
アサーションを含み、ユーザーセッションはNotValidAfter
フィールドで指定された時間が経過するまで有効なままです。ユーザーセッションの有効期限が切れた後、ユーザーは再認証する必要があります。 -
NotValidAfter
アサーションを含まない: ユーザーセッションは 30 日間有効なままであり、その後ユーザーは再認証する必要があります。
検証
-
RHACS ポータルで、Platform Configuration
Access Control に移動します。 - Auth Providers タブを選択します。
- 設定を確認する認証プロバイダーをクリックします。
- Auth Provider セクションのヘッダーから Test login を選択します。新しいブラウザータブで、Test login ページが開きます。
認証情報を使用してログインします。
-
正常にログインした場合、RHACS は、システムへのログインに使用した資格情報に対して ID プロバイダーが送信した
User ID
とUser Attributes
を表示します。 - ログイン試行が失敗した場合、RHACS は ID プロバイダーの応答を処理できなかった理由を説明するメッセージを表示します。
-
正常にログインした場合、RHACS は、システムへのログインに使用した資格情報に対して ID プロバイダーが送信した
Test login ブラウザータブを閉じます。
注記応答が認証の成功を示している場合でも、ID プロバイダーからのユーザーメタデータに基づいて追加のアクセスルールを作成しないといけない場合があります。
18.4.2. Google Workspace を OIDC ID プロバイダーとして設定する
Google Workspace は、Red Hat Advanced Cluster Security for Kubernetes のシングルサインオン (SSO) プロバイダーとして使用できます。
18.4.2.1. GCP プロジェクトの OAuth 2.0 認証情報の設定
Google Workspace を Red Hat Advanced Cluster Security for Kubernetes の ID プロバイダーとして設定するには、最初に GCP プロジェクトの OAuth 2.0 認証情報を設定する必要があります。
前提条件
- 新しいプロジェクトを作成するには、組織の Google Workspace アカウントへの管理者レベルのアクセス権、または既存のプロジェクトの OAuth 2.0 認証情報を作成および設定するためのパーミッションが必要です。Red Hat は、Red Hat Advanced Cluster Security for Kubernetes へのアクセスを管理する新しいプロジェクトを作成することを推奨します。
手順
- 新しい Google Cloud Platform (GCP) プロジェクトを作成します。プロジェクトの作成および管理 に関する Google ドキュメントのトピックをご覧ください。
- プロジェクトを作成したら、Google API コンソールで Credentials ページを開きます。
- ロゴの近くの左上隅にリスト表示されているプロジェクト名を確認して、正しいプロジェクトを使用していることを確認します。
-
新しい認証情報を作成するには、Create Credentials
OAuth client ID に移動します。 - Application type で Web application を選択します。
- Name ボックスに、アプリケーションの名前 (RHACS など) を入力します。
Authorized redirect URIs ボックスに、
https://<stackrox_hostname>:<port_number>/sso/providers/oidc/callback
と入力します。-
<stackrox_hostname>
を、Central インスタンスを公開するホスト名に置き換えます。 -
<port_number>
を、Central を公開するポート番号に置き換えます。標準の HTTPS ポート443
を使用している場合は、ポート番号を省略できます。
-
- Create をクリックします。これにより、アプリケーションと認証情報が作成され、認証情報ページにリダイレクトされます。
- 情報ボックスが開き、新しく作成されたアプリケーションの詳細が表示されます。情報ボックスを閉じます。
-
.apps.googleusercontent.com
で終わる クライアント ID をコピーして保存します。このクライアント ID は、Google API コンソールを使用して確認できます。 左側のナビゲーションメニューから OAuth consent screen を選択します。
注記OAuth 同意画面の設定は、前の手順で作成したアプリケーションだけでなく、GCP プロジェクト全体で有効です。このプロジェクトですでに OAuth 同意画面が設定されていて、Red Hat Advanced Cluster Security for Kubernetes ログインに別の設定を適用する場合は、新しい GCP プロジェクトを作成します。
OAuth 同意画面ページで、以下を行います。
- Application type に Internal を選択します。Public を選択すると、Google アカウントを持っている人なら誰でもログインできます。
- わかりやすい アプリケーション名 を入力します。この名前は、ユーザーがサインインするときに同意画面に表示されます。たとえば、RHACS または <organization_name> SSO for Red Hat Advanced Cluster Security for Kubernetes を使用します。
- Scopes for Google APIs に、email、profile、openid スコープのみがリストされていることを確認します。シングルサインオンには、これらのスコープのみが必要です。追加のスコープを付与すると、機密データが公開されるリスクが高まります。
18.4.2.2. クライアントシークレットの指定
Red Hat Advanced Cluster Security for Kubernetes バージョン 3.0.39 以降は、クライアントシークレットを指定するときに OAuth 2.0 認証コード付与 認証フローをサポートします。この認証フローを使用すると、Red Hat Advanced Cluster Security for Kubernetes は更新トークンを使用して、OIDC ID プロバイダーで設定されたトークンの有効期限を超えてユーザーがログインし続けるようにします。
ユーザーがログアウトすると、Red Hat Advanced Cluster Security for Kubernetes はクライアント側から更新トークンを削除します。さらに、ID プロバイダー API が更新トークンの失効をサポートしている場合、Red Hat Advanced Cluster Security for Kubernetes は、更新トークンを失効させる要求も ID プロバイダーに送信します。
OIDC ID プロバイダーと統合するように Red Hat Advanced Cluster Security for Kubernetes を設定するときに、クライアントシークレットを指定できます。
- フラグメント コールバックモード で クライアントシークレット を使用することはできません。
- 既存の認証プロバイダーの設定を編集することはできません。
- クライアントシークレット を使用する場合は、Red Hat Advanced Cluster Security for Kubernetes で新しい OIDC 統合を作成する必要があります。
Red Hat は、Red Hat Advanced Cluster Security for Kubernetes を OIDC ID プロバイダーに接続するときに、クライアントシークレットを使用することを推奨します。クライアントシークレット を使用しない場合は、Do not use Client Secret (not recommended) オプションを選択する必要があります。
18.4.2.3. OIDC ID プロバイダーの設定
OpenID Connect (OIDC) ID プロバイダーを使用するように Red Hat Advanced Cluster Security for Kubernetes (RHACS) を設定できます。
前提条件
- Google Workspace などの ID プロバイダーでアプリケーションを設定している。
- RHACS で ID プロバイダーを設定する権限が必要です。
手順
-
RHACS ポータルで、Platform Configuration
Access Control に移動します。 - Create auth provider をクリックし、ドロップダウンリストから OpenID Connect を選択します。
以下のフィールドに情報を入力します。
- Name: 認証プロバイダーを識別する名前。たとえば、Google Workspace です。統合名は、ユーザーが適切なサインインオプションを選択できるように、ログインページに表示されます。
Callback mode: ID プロバイダーが別のモードを必要としない限り、デフォルト値である Auto-select (recommended) を選択します。
注記Fragment
モードは、シングルページアプリケーション (SPA) の制限を考慮して設計されています。Red Hat は、初期の統合のFragment
モードのみをサポートしています。最近の統合でこのモードを使用することは推奨していません。Issuer: ID プロバイダーのルート URL。たとえば、Google Workspace の場合は
https://accounts.google.com
です。詳細は、ID プロバイダーのドキュメントを参照してください。注記RHACS バージョン 3.0.49 以降を使用している場合は、Issuer に対して次のアクションを実行できます。
-
ルート URL の前に
https+insecure://
を付けて、TLS 検証を飛ばします。この設定はセキュアでなく、Red Hat は推奨していません。テスト目的でのみ使用してください。 -
ルート URL とともに
?key1=value1&key2=value2
などのクエリー文字列を指定します。RHACS は、入力したとおりに Issuer の値を認証エンドポイントに追加します。これを使用して、プロバイダーのログイン画面をカスタマイズできます。たとえば、hd
パラメーター を使用して Google Workspace のログイン画面を特定のホストドメインに最適化したり、pfidpadapterid
パラメーターを使用してPingFederate
で認証方法を事前に選択したりできます。
-
ルート URL の前に
- クライアント ID: 設定されたプロジェクトの OIDC クライアント ID。
- Client Secret: ID プロバイダー (IdP) から提供されたクライアントシークレットを入力します。推奨されていないクライアントシークレットを使用していない場合は、Do not use Client Secret を選択します。
選択した ID プロバイダーを使用して RHACS にアクセスするユーザーに 最小アクセスロール を割り当てます。
ヒントセットアップの完了時に、最小アクセスルール を 管理者 に設定します。後で、Access Control ページに戻って、ID プロバイダーのユーザーメタデータに基づいて、より調整されたアクセスルールを設定できます。
RHACS にアクセスするユーザーとグループのアクセスルールを追加するには、Rules セクションで Add new rule をクリックします。たとえば、
administrator
と呼ばれるユーザーに Admin のロールを与える場合は、次のキーと値のペアを使用してアクセスルールを作成できます。キー
値
名前
管理者 (administrator)
Role
Admin
- Save をクリックします。
検証
-
RHACS ポータルで、Platform Configuration
Access Control に移動します。 - Auth providers タブを選択します。
- 設定を確認する認証プロバイダーを選択します。
- Auth Provider セクションのヘッダーから Test login を選択します。新しいブラウザータブで、Test login ページが開きます。
クレデンシャルを使用してログインします。
-
正常にログインした場合、RHACS は、システムへのログインに使用した資格情報に対して ID プロバイダーが送信した
User ID
とUser Attributes
を表示します。 - ログイン試行が失敗した場合、RHACS は ID プロバイダーの応答を処理できなかった理由を説明するメッセージを表示します。
-
正常にログインした場合、RHACS は、システムへのログインに使用した資格情報に対して ID プロバイダーが送信した
- Test Login ブラウザータブを閉じます。
18.4.3. OpenShift Container Platform OAuth サーバーをアイデンティティープロバイダーとして設定
OpenShift Container Platform には、Red Hat Advanced Cluster Security for Kubernetes (RHACS) の認証プロバイダーとして使用できる組み込みの OAuth サーバーが含まれています。
18.4.3.1. OpenShift Container Platform OAuth サーバーをアイデンティティープロバイダーとして設定
組み込みの OpenShift Container Platform OAuth サーバーを RHACS の ID プロバイダーとして統合するには、このセクションの手順を使用します。
前提条件
-
RHACS で ID プロバイダーを設定するには、
AuthProvider
権限が必要である。 - ID プロバイダーを介して OpenShift Container Platform OAuth サーバーでユーザーおよびグループをすでに設定しておく必要がある。ID プロバイダーの要件は、ID プロバイダーの設定の概要 を参照してください。
以下の手順では、OpenShift Container Platform OAuth サーバー用に central
という名前のメインルートを 1 つだけ設定します。
手順
-
RHACS ポータルで、Platform Configuration
Access Control に移動します。 - Create auth provider をクリックし、ドロップダウンリストから OpenShift Auth を選択します。
- Name フィールドに認証プロバイダーの名前を入力します。
選択した ID プロバイダーを使用して RHACS にアクセスするユーザーに Minimum access role を割り当てます。ユーザーは、RHACS にログインするために、このロールに付与された権限、またはより高い権限を持つロールを持っている必要があります。
ヒントセキュリティーのために、セットアップを実行する際には、最初に Minimum access role を None に設定することを推奨します。後で、Access Control ページに戻って、ID プロバイダーのユーザーメタデータに基づいて、より調整されたアクセスルールを設定できます。
オプション: RHACS にアクセスするユーザーとグループのアクセスルールを追加するには、Rules セクションで Add new rule をクリックし、ルール情報を入力して Save をクリックします。アクセスを設定するには、ユーザーまたはグループの属性が必要です。
ヒントグループは通常、チームまたはアクセス許可セットに関連付けられており、ユーザーよりも頻繁に変更する必要がないため、グループマッピングはより堅牢です。
OpenShift Container Platform でユーザー情報を取得するには、以下のいずれかの方法を使用できます。
-
User Management
Users <username> YAML をクリックします。 -
k8s/cluster/user.openshift.io~v1~User/<username>/yaml
ファイルにアクセスし、name
、uid
(RHACS のuserid
)、およびgroups
の値を書き留めます。 - OpenShift Container Platform API リファレンス で説明されているように、OpenShift Container Platform API を使用します。
次の設定例では、次の属性を持つ Admin ロールのルールを設定する方法を説明します。
-
name
:administrator
-
groups
:["system:authenticated", "system:authenticated:oauth", "myAdministratorsGroup"]
-
uid
:12345-00aa-1234-123b-123fcdef1234
次のいずれかの手順を使用して、この管理者ロールのルールを追加できます。
-
名前のルールを設定するには、Key ドロップダウンリストから
name
を選択し、Value フィールドにadministrator
と入力して、Role で Administrator を選択します。 -
グループのルールを設定するには、Key ドロップダウンリストから
groups
を選択し、Value フィールドにmyAdministratorsGroup
と入力して、Role で Admin を選択します。 -
ユーザー名のルールを設定するには、Key ドロップダウンリストから
userid
を選択し、Value フィールドに12345-00aa-1234-123b-123fcdef1234
を入力して、Role で Admin を選択します。
-
User Management
- OpenShift Container Platform OAuth サーバーにカスタム TLS 証明書を使用する場合は、CA のルート証明書を信頼されたルート CA として Red Hat Advanced Cluster Security for Kubernetes に追加する必要があります。そうしないと、Central は OpenShift Container Platform OAuth サーバーに接続できません。
roxctl
CLI を使用して Red Hat Advanced Cluster Security for Kubernetes をインストールするときに OpenShift Container Platform OAuth サーバー統合を有効にするには、Central でROX_ENABLE_OPENSHIFT_AUTH
環境変数をtrue
に設定します。$ oc -n stackrox set env deploy/central ROX_ENABLE_OPENSHIFT_AUTH=true
-
アクセスルールの場合、OpenShift Container Platform OAuth サーバーはキー
Email
を返しません。
18.4.3.2. OpenShift Container Platform OAuth サーバーの追加ルートの作成
Red Hat Advanced Cluster Security for Kubernetes ポータルを使用して OpenShift Container Platform OAuth サーバーを ID プロバイダーとして設定すると、RHACS は OAuth サーバーのルートを 1 つだけ設定します。ただし、Central カスタムリソースで注釈として指定することにより、追加のルートを作成できます。
前提条件
手順
RHACS Operator を使用して RHACS をインストールした場合:
Central カスタムリソースのパッチを含む
CENTRAL_ADDITIONAL_ROUTES
環境変数を作成します。$ CENTRAL_ADDITIONAL_ROUTES=' spec: central: exposure: loadBalancer: enabled: false port: 443 nodePort: enabled: false route: enabled: true persistence: persistentVolumeClaim: claimName: stackrox-db customize: annotations: serviceaccounts.openshift.io/oauth-redirecturi.main: sso/providers/openshift/callback 1 serviceaccounts.openshift.io/oauth-redirectreference.main: "{\"kind\":\"OAuthRedirectReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"Route\",\"name\":\"central\"}}" 2 serviceaccounts.openshift.io/oauth-redirecturi.second: sso/providers/openshift/callback 3 serviceaccounts.openshift.io/oauth-redirectreference.second: "{\"kind\":\"OAuthRedirectReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"Route\",\"name\":\"second-central\"}}" 4 '
CENTRAL_ADDITIONAL_ROUTES
パッチを Central カスタムリソースに適用します。$ oc patch centrals.platform.stackrox.io \ -n <namespace> \ 1 <custom-resource> \ 2 --patch "$CENTRAL_ADDITIONAL_ROUTES" \ --type=merge
または、Helm を使用して RHACS をインストールした場合:
次のアノテーションを
values-public.yaml
ファイルに追加します。customize: central: annotations: serviceaccounts.openshift.io/oauth-redirecturi.main: sso/providers/openshift/callback 1 serviceaccounts.openshift.io/oauth-redirectreference.main: "{\"kind\":\"OAuthRedirectReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"Route\",\"name\":\"central\"}}" 2 serviceaccounts.openshift.io/oauth-redirecturi.second: sso/providers/openshift/callback 3 serviceaccounts.openshift.io/oauth-redirectreference.second: "{\"kind\":\"OAuthRedirectReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"Route\",\"name\":\"second-central\"}}" 4
helm upgrade
を使用して、Central カスタムリソースにカスタムアノテーションを適用します。$ helm upgrade -n stackrox \ stackrox-central-services rhacs/central-services \ -f <path_to_values_public.yaml> 1
- 1
-f
オプションを使用して、values-public.yaml
設定ファイルのパスを指定します。
18.4.4. SSO 設定を使用して Azure AD を RHACS に接続する
サインオン (SSO) 設定を使用して Azure Active Directory (AD) を RHACS に接続するには、特定のクレーム (トークンに対する group
クレームなど) を追加し、ユーザー、グループ、またはその両方をエンタープライズアプリケーションに割り当てる必要があります。
18.4.4.1. SSO 設定を使用した SAML アプリケーションのトークンへのグループクレームの追加
トークンに group
クレームを含めるように Azure AD でのアプリケーション登録を設定します。手順については、SSO 設定を使用して SAML アプリケーションのトークンにグループクレームを追加する を参照してください。
最新バージョンの Azure AD を使用していることを確認してください。Azure AD を最新バージョンにアップグレードする方法の詳細は、Azure AD Connect: 以前のバージョンから最新バージョンへのアップグレード を参照してください。