

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ServiceNow の OAuth 2.0 クライアント認証情報認証を設定する
<a name="kb-managed-servicenow-oauth2-setup"></a>

認証には ServiceNow Table API with OAuth 2.0 Client Credentials (2LO) を使用します。Amazon Bedrock でデータソースを設定する前に、ServiceNow インスタンスで次の手順をすべて実行します。

## ステップ 1: クライアント認証情報の付与タイプを有効にする
<a name="kb-managed-servicenow-oauth2-step1"></a>

1. ServiceNow で、フィルターナビゲーター`sys_properties.list`を使用して に移動します。

1. 次の値を使用して新しいシステムプロパティを作成します。
   + **名前** – `glide.oauth.inbound.client.credential.grant_type.enabled`
   + **型** – `true | false`
   + **値** – `true`

## ステップ 2: 専用サービスアカウントを作成する
<a name="kb-managed-servicenow-oauth2-step2"></a>

1. **ユーザー管理** > **ユーザー**に移動します。

1. **新規**を選択し、フォームに入力します。
   + **ユーザー ID** – わかりやすい名前 (例: `svc.amazon.quick.kb`)。
   + **ウェブサービスアクセスのみ** — 確認済み。これにより、インタラクティブログインが防止されます。
   + **パスワード** – 強力なパスワードを設定します。コネクタは OAuth を使用しますが、アカウントの作成にはパスワードが必要です。

1. [**Submit**] を選択してください。

## ステップ 3: サービスアカウントロールを割り当てる
<a name="kb-managed-servicenow-oauth2-step3"></a>

1. サービスアカウントを開きます (**ユーザー管理** > **ユーザー** > サービスアカウント）。

1. **ロール** タブで、**編集**を選択し、次のロールを追加します。
   + `knowledge_admin` – すべてのナレッジベース記事へのフル読み取りアクセス。KB あたりのユーザー基準の制限をバイパスします。
   + `catalog_admin` – すべてのサービスカタログ項目へのフル読み取りアクセス。カタログごとの制限をバイパスします。

1. **[保存]** を選択します。

**注記**  
保存後、合計約 14 個のロールが表示されます。ServiceNow は`_admin`、親ロールから含まれたロールを自動継承します。ステップ 2 (`knowledge_admin` と ) に記載されている 2 つのロールのみを手動で割り当てます`catalog_admin`。`admin`、`itil`、または `snc_read_only`ロールを割り当てないでください。

## ステップ 4: OAuth アプリケーションを登録する
<a name="kb-managed-servicenow-oauth2-step4"></a>

1. System **OAuth** > **Application Registry** に移動します。

1. **新規** > **外部クライアントの OAuth API エンドポイントを作成する**を選択します。

1. フォームに入力します。
   + **名前** – わかりやすい名前 (例: `Amazon-Quick-KB-Client`)。
   + **リダイレクト URL** – 空白のままにします。クライアント認証情報フローには必要ありません。

1. [**Submit**] を選択してください。

1. すぐに**クライアント ID** と**クライアントシークレット**をコピーします。クライアントシークレットは 1 回だけ表示されます。

**重要**  
アプリケーションを作成するには、インターセプターページを使用する必要があります。`oauth_entity` テーブルに直接 を挿入してレコードを作成しないでください。

## ステップ 5: OAuth アプリケーションを設定する
<a name="kb-managed-servicenow-oauth2-step5"></a>

1. Application Registry リストからアプリケーションレコードを再度開きます。

1. **OAuth アプリケーションユーザー**フィールドが表示されない場合は、**Configure** > **Form Builder** を使用して追加します。

1. 次のフィールドを設定します。
   + **OAuth アプリケーションユーザー** – サービスアカウント ( など`svc.amazon.quick.kb`)。
   + **スコープの制限** – `Broadly scoped`。
   + **クライアントタイプ** – `integration_as_a_service`。

1. **[更新]** を選択します。

## ステップ 6: API アクセスポリシーを設定する
<a name="kb-managed-servicenow-oauth2-step6"></a>

API アクセスポリシーがない場合、トークンは認証されますが、テーブル API は HTTP 401 を返します。以下の両方のサブステップを完了します。

**インバウンド認証プロファイルを作成する**

1. **システムウェブサービス** > **API アクセスポリシー** > **インバウンド認証プロファイル**に移動します。

1. **新規** を選択して設定します。
   + **名前** – 例: `Amazon-Quick-KB-Client-Profile`。
   + **Type** (タイプ) – `OAuth`。
   + **OAuth エンティティ** – OAuth アプリケーションを選択します。

1. [**Submit**] を選択してください。

1. プロファイルを再度開きます。**認証ポリシー**関連リストで、**アクセス許可ポリシー****の編集**と追加を選択します。**[保存]** を選択します。

**REST API アクセスポリシーを作成する**

1. **システムウェブサービス** > **API アクセスポリシー** > **REST API アクセスポリシー**に移動します。

1. **新規** を選択し、以下を設定します。
   + **名前** – 例: `Table API Oauth access policy`。
   + **REST API** – `Table API`。
   + **REST API パス** – `now/table`。
   + **すべてのメソッドに適用** – チェック済み。
   + **すべてのリソースに適用** — チェック済み。
   + **すべてのテーブルに適用** — チェック済み。
   + **すべてのバージョンに適用** — チェック済み。

1. [**Submit**] を選択してください。

1. ポリシーを再度開きます。**インバウンド認証プロファイル**関連リストで、**「編集**」を選択し、インバウンド認証プロファイルを追加します。**[保存]** を選択します。

## ステップ 7: OAuth フローを検証する
<a name="kb-managed-servicenow-oauth2-step7"></a>

データソースを設定する前に、OAuth フローがend-to-endで機能することを確認します。

**トークンをリクエストする:**

```
curl -s -X POST "https://{{INSTANCE}}.service-now.com/oauth_token.do" \
  -d "grant_type=client_credentials" \
  -d "client_id={{CLIENT_ID}}" \
  -d "client_secret={{CLIENT_SECRET}}"
```

**Table API アクセスを確認します。**

```
curl -s "https://{{INSTANCE}}.service-now.com/api/now/table/kb_knowledge?sysparm_limit=1" \
  -H "Authorization: Bearer {{ACCESS_TOKEN}}"
```

次の表に、各検証結果と実行するアクションを示します。


**検証結果**  

| 結果 | 意味 | アクション | 
| --- | --- | --- | 
| データを含む HTTP 200 | 正しく動作する | Secrets Manager シークレットの作成に進みます。 | 
| 空の配列を持つ HTTP 200 | 欠落しているknowledge\_adminロール | サービスアカウントにknowledge\_adminロールを割り当てます。 | 
| HTTP 401 | API アクセスポリシーが設定されていません | インバウンド認証プロファイルと REST API アクセスポリシーの両方の設定を確認します。 | 

## ステップ 8: Secrets Manager シークレットを作成する
<a name="kb-managed-servicenow-oauth2-step8"></a>

次のキーと値のペアを使用して、ナレッジベース AWS リージョン と同じ の AWS Secrets Manager シークレットに認証情報を保存します。

```
{
    "clientId": "{{your-client-id}}",
    "clientSecret": "{{your-client-secret}}",
    "instanceUrl": "https://{{YOUR_INSTANCE}}.service-now.com"
}
```


**シークレットフィールド**  

| フィールド | 説明 | 
| --- | --- | 
| clientId | ステップ 4 のアプリクライアント ID。 | 
| clientSecret | ステップ 4 の作成時に明らかになったアプリクライアントシークレット。 | 
| instanceUrl | 完全な ServiceNow インスタンス URL (末尾のスラッシュなしhttps://、 を含む）。 | 

**重要**  
に末尾にスラッシュがあって`instanceUrl`はなりません。

以下を使用してシークレットを作成します AWS Command Line Interface。

```
aws secretsmanager create-secret \
  --name {{bedrock-servicenow-creds}} \
  --secret-string file://secret.json
```

レスポンスからシークレット ARN を記録します。データソース として使用します`secretArn`。

## 次の手順
<a name="kb-managed-servicenow-oauth2-next"></a>

シークレットを保存したら、データソースを作成します。「[ServiceNow データソースを接続する](kb-managed-ds-servicenow-connect.md)」を参照してください。