

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# ServiceNow에 대한 OAuth 2.0 클라이언트 자격 증명 인증 설정
<a name="kb-managed-servicenow-oauth2-setup"></a>

인증을 위해 OAuth 2.0 클라이언트 자격 증명(2LO)과 함께 ServiceNow 테이블 API를 사용합니다. 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. **제출**을 선택합니다.

## 3단계: 서비스 계정 역할 할당
<a name="kb-managed-servicenow-oauth2-step3"></a>

1. 서비스 계정(**사용자 관리** > **사용자** > 서비스 계정)을 엽니다.

1. **역할** 탭에서 **편집**을 선택하고 다음 역할을 추가합니다.
   + `knowledge_admin` - 모든 지식 기반 문서에 대한 전체 읽기 액세스. KB당 사용자 기준 제한을 우회합니다.
   + `catalog_admin` - 모든 서비스 카탈로그 항목에 대한 전체 읽기 액세스. 카탈로그당 제한을 우회합니다.

1. **저장**을 선택합니다.

**참고**  
저장한 후에는 총 약 14개의 역할이 표시됩니다. ServiceNow는 `_admin` 상위 역할에서 포함된 역할을 자동으로 상속합니다. 2단계(`knowledge_admin` 및 )에 나열된 두 역할만 수동으로 할당합니다`catalog_admin`. `admin`, `itil`또는 `snc_read_only` 역할을 할당하지 마십시오.

## 4단계: OAuth 애플리케이션 등록
<a name="kb-managed-servicenow-oauth2-step4"></a>

1. **시스템 OAuth** > **애플리케이션 레지스트리**로 이동합니다.

1. **새로** 만들기 > **외부 클라이언트에 대한 OAuth API 엔드포인트 생성을** 선택합니다.

1. 양식을 작성합니다.
   + **이름** - 설명이 포함된 이름입니다(예: `Amazon-Quick-KB-Client`).
   + **리디렉션 URL** - 비워 둡니다. 클라이언트 자격 증명 흐름에는 필요하지 않습니다.

1. **제출**을 선택합니다.

1. **클라이언트 ID**와 **클라이언트 보안** 암호를 즉시 복사합니다. 클라이언트 보안 암호는 한 번만 표시됩니다.

**중요**  
인터셉터 페이지를 사용하여 애플리케이션을 생성해야 합니다. `oauth_entity` 테이블에 직접 삽입하여 레코드를 생성하지 마십시오.

## 5단계: OAuth 애플리케이션 구성
<a name="kb-managed-servicenow-oauth2-step5"></a>

1. Application Registry 목록에서 애플리케이션 레코드를 다시 엽니다.

1. **OAuth 애플리케이션 사용자** 필드가 표시되지 않으면 **구성** > **양식 빌더**를 사용하여 추가합니다.

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`.
   + **유형** – `OAuth`.
   + **OAuth 엔터티** - OAuth 애플리케이션을 선택합니다.

1. **제출**을 선택합니다.

1. 프로필을 다시 엽니다. **인증 정책** 관련 목록에서 **편집**을 선택하고 **액세스 허용 정책을** 추가합니다. **저장**을 선택합니다.

**REST API 액세스 정책 생성**

1. **시스템 웹 서비스** > **API 액세스 정책** > **REST API 액세스 정책**으로 이동합니다.

1. **새로 만들기**를 선택하고 다음을 설정합니다.
   + **이름** - 예: `Table API Oauth access policy`.
   + **REST API** – `Table API`.
   + **REST API 경로** - `now/table`.
   + **모든 메서드에 적용** - 확인됨.
   + **모든 리소스에 적용** - 확인됨.
   + **모든 테이블에 적용 **- 확인됨.
   + **모든 버전에 적용** - 확인됨.

1. **제출**을 선택합니다.

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}}"
```

**테이블 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)을(를) 참조하세요.