SAML アクセス制御のセットアップ
このトピックの内容: |
このセクションでは、SAML (セキュリティアサーションマークアップ言語) を Klocwork アプリケーションに統合する方法について説明します。この設定により、ユーザーは SAML アプリケーションプロバイダー (IdP) からの既存の資格情報を使用して Klocwork にログインできるようになります。
projects_root/permissions_data
フォルダーにバックアップを強くお勧めします。前提条件
SAML 統合を開始する前に、次のものを用意してください:
-
アクティブな SAML アプリケーションプロバイダー (IdP) (例: Keycloak、Okta、Github)
-
Validate サーバーと SAML IdP 両方への管理アクセス
-
IdP からの必要な情報 (たとえば、URL としての SAML メタデータ、または Klocwork アプリケーションの xml-file と entity-id)
-
次のいずれかのパッケージからの kwauth のバージョン 24.2 以降: kwauthtools、kwbuildtools、またはkw-desktop-tools 内の kw-cmd-installer。認証ツールパッケージのインストールを参照してください。
SAML を使用してセキュア接続 (SSL) を設定する場合は、SAML を設定する前に SSL 接続を構成してテストすることをお勧めします。このアプローチにより、潜在的な障害ポイントの数が減少します。SAML または OIDC 認証用に SSL を有効にするを参照してください。
ステップ 1: Klocwork をアイデンティティプロバイダーに追加する
SAML IdP で Klocwork を構成するには:
-
IdP の管理コンソールにログインします。
-
Klocwork 用の新しい SAML アプリケーションを作成します。 以下の詳細を入力します:
-
アプリケーションのエンティティまたはクライアント ID (例:
kwsaml
)
-
アサーションコンシューマーサービス (ACS) URL。例:
https://your_klocwork_server.com/kwauthgateway/login/saml2/sso/{your-custom-idp-registration-id}
-
-
証明書を構成します。RSA 秘密キーと、そのキーで署名された X.509 証明書を生成します。例は以下のとおりです。
openssl genpkey -algorithm RSA -out private-key.pem openssl req -new -x509 -key private-key.pem -out certificate.crt -days 365 openssl pkcs12 -export -out certificate.pfx -inkey private-key.pem -in certificate.crt (importable pfx certificate)
次に、証明書を IdP にインポートします。
-
属性マッピングを構成します。IdP が、SAML レスポンスで Validate ユーザー名として使用できる属性 (ユーザー名やメールなど) を含めるように設定されていることを確認します。
-
設定を保存します。
ステップ 2: ユーザーのプロビジョニング方法と管理者アカウントを選択する
ユーザーのプロビジョニング方法を選択するには、/projects_root/config/admin.conf
ファイルを編集するか、kwauthconfigw を実行して、次の属性を追加または選択します:
user.manager=modern-jit OR modern-pp
フィールド
-
modern-jit は、ジャストインタイム (JIT) プロビジョニングによる最新の認証であり、ユーザーが IdP を通じて初めてログインするときに、ユーザーアカウントが自動的に作成されます。
認証に成功した後に Validate でユーザーを自動的に作成する場合は、このオプションを選択します。この方法を選択した場合は、IdP にユーザーを追加するだけで済みます。
-
modern-pp は、事前にプロビジョニングされたアカウントに対する最新の認証です。
Validate の統合ユーザー管理ツールを使用して、新しいユーザーを明示的に追加し、グループまたは権限を構成する場合は、このオプションを選択します。この方法を選択した場合は、Validate と IdP の両方に新しいユーザーを追加する必要があります。
admin.conf
に追加します:init.admin.name=<user>
Where:<user> は、管理者権限を付与されるユーザーです
たとえば、会社の IdP 認証情報を使用している場合は、init.admin.name=janedoe@company.com
を設定します
変更を保存します。
modern-pp
を選択する際は必ず管理者アカウントを追加してください。Validate に管理者アカウントを追加するまで、他のユーザーでログインすることはできません。ステップ 3: Validate サーバーで SAML 認証を構成する
kwauthconfigw を使用するか、または /projects_root/config/
に auth.properties
という名前のファイルを作成して、次のパラメータを追加します。
次の例では、{custom-idp-registration-id} を ACS URL (たとえば、https://your_klocwork_server.com/kwauthgateway/login/saml2/sso/{your-custom-idp-registration-id}
) の最後の部分に置き換えて、private-key.pem と certificate.crt を手順 1 で生成した秘密キーと証明書に置き換えます。
kw.authFramework=saml
kw.userIdAttribute={SAML attribute key for username data}
kw.userDnAttribute={SAML attribute key for display name data}
kw.saml.force_authn=true
spring.security.saml2.relyingparty.registration.{custom-idp-registration-id}.assertingparty.metadata-uri = {SAML metadata URL or metadata XML path} i.e https://login.microsoftonline.com/abc-def-xyz-321/federationmetadata/2007-06/federationmetadata.xml?appid=qwe-asd-zxc-123
spring.security.saml2.relyingparty.registration.{custom-idp-registration-id}.entity-id = {your entity or client id}
spring.security.saml2.relyingparty.registration.{custom-idp-registration-id}.signing.credentials[0].private-key-location=file:${PROJECTS_ROOT}/auth/private-key.pem
spring.security.saml2.relyingparty.registration.{custom-idp-registration-id}.signing.credentials[0].certificate-location=file:${PROJECTS_ROOT}/auth/certificate.crt
パラメーター | 説明 | 例 |
---|---|---|
フレームワーク | 認証のフレームワーク (この場合は SAML) | kw.authFramework=saml |
ユーザー ID 属性 | Validate ユーザー名にマッピングする属性値を取得するために使用される SAML/OIDC プリンシパル属性キー | kw.userIdAttribute=preferred_username |
表示名属性 | Validate での表示名 | kw.userDnAttribute=name |
メタデータ URI | IdP に関する重要な構成情報が含まれる XML ファイルを指します。この情報には、IdP の公開キー、エンドポイント、および安全な SAML 認証フローを確立するために必要なその他の設定が含まれます。 | spring.security.saml2.relyingparty.registration.kwrealm.assertingparty.metadata-uri=https://your_klocwork_server.com/realms/kwrealm/protocol/saml/descriptor |
エンティティ ID | IdP で指定したエンティティ ID (セキュリティ属性が先頭に付く) | spring.security.saml2.relyingparty.registration.kwrealm.entity-id=kwsaml |
秘密キーの場所 | 秘密キーの場所 (セキュリティ属性が先頭に付く) | spring.security.saml2.relyingparty.registration.kwrealm.signing.credentials[0].private-key-location=file:${PROJECTS_ROOT}/auth/local.key |
証明書の場所 | 証明書の場所 (セキュリティ属性が先頭に付く) | spring.security.saml2.relyingparty.registration.kwrealm.signing.credentials[0].certificate-location=file:${PROJECTS_ROOT}/auth/local.crt |
リクエストの有効期限 | (オプション) デバイス認証フローの最大継続時間 (秒単位) | kw.RequestExpirySeconds=180 |
強制認証 | (オプション) 既存の認証セッションに関係なく、ユーザーに資格情報 (ユーザー名やパスワードなど) を再入力するよう求めます。デフォルトは true です。 | kw.saml.force_authn=true |
パッシブ SAML | (オプション) 認証要求を「パッシブ」にするかどうか、つまり IdP でユーザーのの操作が行われないかどうかを指定します。 デフォルトは false です。つまり、ユーザーの操作が必要な場合 (資格情報の入力を求めるなど)、IdP は認証を続行してはいけません。 | kw.saml.is_passive=false |
ステップ 4: SAML 統合をテストする
SAML 統合をテストするには:
-
Validate サーバーを再起動します。
-
Validate ブラウザーを開き、[ログイン] ボタンをクリックします。認証のために IdP にリダイレクトされるはずです。
-
デバイス認証フロー に従って SAML 認証を行います。
IdP で認証すると、Validate にリダイレクトされ、自動的にログインします。
トラブルシューティング
セットアップ中に表示される可能性のある一般的なエラーメッセージと、その修正方法を次に示します。
-
「リクエストされたターゲットへの有効な証明書パスが見つかりません」: IdP は自己署名証明書を使用しています。Validate がこれを使って IdP と通信できるように、環境に証明書を追加してください。
-
「認証リクエストに署名が必要な場合、署名資格情報は空であってはなりません」: IdP には署名が必要ですが、証明書が構成に含まれていません。
-
「構成でサポートされていない認証フレームワークが指定されました」: フレームワークが構成されていません。
auth.properties
ファイルで、kw.authFramework
がsaml
またはopenid
に設定されていることを確認します。 -
Validate で IdP 設定を構成するときに問題が発生する場合は、IdP デバッグログをオンにすると役立つ場合があります。これにより、トラブルシューティングに役立つ詳細情報が提供されます。
機密情報が漏洩したり、大量のディスク領域が消費されたりする可能性があるため、運用環境ではデバッグログをオフにすることを忘れないでください。IdP デバッグログを有効にするには、次のいずれかの方法を選択します。
-
KW_DEBUG
環境変数を true に設定し、kwauthgateway
のログレベルをdebug
に設定します。 -
auth.properties
ファイルで、kw.debugAttributes
を true に設定します。この設定により、IdP から返される属性のテキスト表現を確認することができ、kw.userIdAttribute
として使用するものを判断するために役立ちます。kw.debugAttributes=true
である間はサーバーにログインできないため、サーバーが使用できなくなることを覚えておいてください。
-
詳細情報
SAML の SSL を有効にするには、SAML または OIDC 認証用に SSL を有効にするを参照してください