Azure Key Vault と ServiceNow の外部認証情報ストアの統合:一般的なセットアップの問題、根本原因、および解決策Issue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Azure Key Vault に保存されている認証情報は、MID サーバーによって解決されたときに、認証情報のテストやディスカバリー中に失敗します。一般的なエラーには、Azure パラメーターが null と表示される、ソケットが *.vault.azure.net:443 にリセットされる、または無効なユーザー名/資格情報の解析につながるシークレット JSON の不一致などがあります。 Symptoms<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 外部の認証情報ストアで構成された認証情報のテスト = Azure Key Vault が失敗しました。 MID ログには、次のものが 1 つ以上表示されます。 AzureAccessTokenManager - getTokenWithSecretKey ... tenantId=null, clientId=null MID Server is hosted outside of Azure cloud. Please check your Azure credential configuration in MID Server read ECONNRESET / socket exception to https://<vault>.vault.azure.net 取得された JSON から派生したユーザー名/シークレットが無効または欠落していることを示すエラーです。 セットアップ (構成 + ネットワーク + JSON + マッピング) を修正した後、外部ストア認証情報のテストに成功し、ディスカバリーが続行されます。 Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } すべてのリリース Cause<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } - MID パラメーターが追加されましたが、MID が再起動されていない→、値はログで null のままです (例:tenantId=null、clientId=null)。 - config.xml パラメーターが正しくないか、欠落しています (Azure の外部でホストされている MID の場合): ext.cred.azure.tenant_id,ext.cred.azure.client_id,ext.cred.azure.secret_key,ext.cred.azure.vault_name - MID から *.vault.azure.net:443 へのネットワーク/TLS エグレス (または SSL インターセプト/プロキシの破損) → ECONNRESET/ソケットエラーがブロックされます。 - ServiceNow 認証情報レコードの認証情報 ID マッピングが正しくない (たとえば、vault_name が config.xml に設定されていない場合に のみを使用する)。 - Key Vault のシークレット JSON スキーマが、選択した資格情報の種類で期待されるものと一致しません (必要なキーの欠落、PEM/文字列の形式が正しくない、間違った type など)。 Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 次の順にステップを実行します。 1.MID の構成 (Azure 外部のみ) 手順: MID ホストで agent/config.xml ファイルを編集します。(パラメーター名は大文字と小文字とドットを区別します)。 重要: ファイルを保存した後、MID サーバーサービスを再起動します。 検証: 次の MID ログエントリには次の情報が表示されます。tenantId= および clientId= ( null ではない)。 注意: パラメーターを追加または変更した後に MID が再起動されない場合、ログには tenantId=null、 clientId=null と表示され続けます。 2.MID の構成 (Inside Azure のみ) 手順: MID ホストでマネージド ID (システムまたはユーザーがアサイン) を使用します。 ID に、Key Vault に対するシークレットの取得 (およびオプションでリスト) アクセス許可を付与します。 config.xml ではクライアントシークレットパラメーターは必要ありません。 検証: MID ログには、クライアントシークレットを使用せずに正常にトークン取得が成功したことが示されます。 3.送信ネットワークアクセスを許可 手順: MID ホストからの送信 HTTPS (443) を許可します。 *.vault.azure.net Azure AD ログインエンドポイント ( login.microsoftonline.com など)。 プロキシを使用する場合は、それを使用するように MID を設定し、プロキシがこれらのエンドポイントに到達できることを確認します。 クイックチェック: MID ホストからは、Postman または curl の「GET secret」コマンドが成功するはずです ( ECONNRESET なし)。 4.ServiceNow で正しい認証情報 ID を設定する 手順: [外部の認証情報ストア] = [Azure Key Vault] の認証情報レコードを開きます。 認証情報 ID に適切な形式を使用します。 条件認証情報 ID フォーマットext.cred.azure.vault_name が config.xmlに設定されています ext.cred.azure.vault_name が設定されていません: 5.シークレットを正しい JSON 形式で保存する 次の例を参考にしてください (実際のフィールドは認証情報タイプによって異なります)。 例 1 – ユーザー名/パスワード { "type": "<type_for_username_password>", "user": "<user_value>", "password": "<password_value>" } 例 2 – キーベースの認証 { "type": "<type_for_key_based_auth>", "user": "<user_value>", "private_key": "<PEM or key content>", "passphrase": "" } ヒント: :有効な JSON (隠し文字や特殊文字は使用しないでください) であることを確認します。 - PEM または主要なコンテンツの改行を保持します。 :認証情報タイプのすべての必須フィールドを含めます。 6.再テストと検証 手順: -テスト認証情報を使用して、期待される結果→成功。 -同じ認証情報を使用してディスカバリーを再実行します。 - 認証が成功したことを MID ログで確認します。 一般的なエラーとクイックフィックス 症状根本原因アクションtenantId=null、clientId=null構成変更後に MID が再起動されないMID サーバーを再起動するECONNRESET を読み取り、 vault.azure.net:443 しますHTTPS をブロックするネットワークまたはプロキシ443 を許可し、SSL インスペクションを無効にするログ内のユーザー名が無効または空ですJSON フィールドが正しくないか、欠落していますKey Vault の JSON を修正ローカル認証情報は機能しますが、外部からの認証情報は失敗します間違った認証情報 ID 形式上のテーブルから正しい形式を使用 Related Links<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } MID サーバーと Azure Key Vault の統合