Skip to main content

개요

Okta는 정규화된 사용자 수명 주기, 인증, MFA 및 관리 활동 데이터를 제공할 수 있습니다. 검토된 예시는 다음과 같습니다.
  • account.locked — 계정 잠김
  • mfa.factor.activated — 추가 MFA 요소 활성화
  • auth.login.failed — 로그인 실패
두 연결 방식 모두 동일한 두 가지 스트림, 즉 사용자 디렉터리(/api/v1/users)와 시스템 로그(/api/v1/logs)를 읽습니다. 연동 데이터가 신호가 되는 방식을 참조하십시오.

연결 방식 선택

두 방식 모두 동일한 접근 권한이 필요하므로, 선택 기준은 플랫폼이 읽을 수 있는 데이터가 아니라 자격 증명 관리 방식입니다.

옵션 A — API 토큰(SSWS)

권장 방식입니다.

Living Security에 필요한 정보

사전 요구 사항

  • 서비스 계정 사용자를 생성하고, 관리자 역할을 할당하고, API 토큰을 생성하려면 Okta Super Administrator여야 합니다.
1

토큰을 소유할 사용자 생성

Okta API 토큰은 해당 토큰을 생성한 사용자의 권한을 그대로 가지며, 그 사용자가 비활성화되면 작동하지 않습니다. 담당자가 변경되어도 연결이 유지되도록 개인 관리자 계정 대신 전용 서비스 계정을 생성하십시오.
  1. Admin Console에서 Directory → People로 이동합니다.
  2. Add person을 클릭하고 svc-livingsecurity@yourcompany.com와 같은 사용자를 생성합니다.
  3. 계정을 활성화합니다.
2

읽기 전용 관리자 역할 할당

플랫폼은 데이터를 읽기만 합니다. 읽기 이상의 권한을 부여하면 토큰에 사용되지 않는 권한이 부여됩니다.
  1. Security → Administrators로 이동합니다.
  2. Add administrator를 클릭하고 이전 단계에서 생성한 사용자를 선택합니다.
  3. Read-only Administrator 역할을 할당합니다.
  4. Save를 클릭합니다.
관리자 역할이 없으면 Okta Management API 호출은 200 OK와 함께 성공하지만 빈 목록을 반환합니다. 역할이 누락되었음을 알려 주는 403는 없으며, 스트림이 단순히 비어 있는 상태로 유지됩니다.
3

API 토큰 생성

  1. 1단계에서 만든 서비스 계정 사용자로 Admin Console에 로그인합니다. 토큰은 이를 생성한 계정의 권한을 상속합니다.
  2. Security → API로 이동하여 Tokens 탭을 엽니다.
  3. Create token을 클릭하고 Living Security Platform와 같은 이름을 지정한 다음 Create token을 클릭합니다.
  4. 토큰 값을 지금 복사하십시오. Okta는 토큰 값을 한 번만 표시하며 이후에는 다시 표시하지 않습니다.
Okta는 30일 동안 사용하지 않은 API 토큰을 비활성화합니다. 이 연동의 동기화는 최소 하루에 한 번 실행되므로, 활성 상태의 연결은 자체 토큰을 유효하게 유지합니다. 한 달 동안 일시 중지된 상태로 둔 연결에는 새 토큰이 필요합니다.
위의 주소 목록은 Okta 조직이 네트워크 영역(network zone)으로 API 접근을 제한하는 경우에만 필요합니다. 대부분의 조직은 해당하지 않습니다.
4

테넌트 서브도메인 확인

Admin Console URL은 다음과 같은 형태입니다. https://acme-admin.okta.com 테넌트 서브도메인은 acme이며, -admin 접미사, .okta.com, https://은 포함하지 않습니다.
이제 Okta (SSWS)에 연결되었습니다.

문제 해결

토큰이 유효하지 않거나, 해지되었거나, 30일간 사용하지 않아 비활성화되었습니다. 서비스 계정 사용자로 새 토큰을 생성하여 연결에 다시 입력하십시오.
토큰 소유자에게 관리자 역할이 없습니다. 서비스 계정에 Read-only Administrator를 할당하십시오(2단계). 역할이 누락된 경우 API는 오류 대신 빈 목록과 함께 200 OK을 반환합니다.
토큰을 생성한 사용자가 비활성화되면 토큰이 작동하지 않습니다. 이 때문에 토큰은 개인이 아닌 서비스 계정에 속해야 합니다.

옵션 B — OAuth 2.0 서비스 애플리케이션

보안 정책상 장기 API 토큰을 허용하지 않는 경우 이 방식을 사용하십시오. 토큰 대신 클라이언트 ID와 직접 보유하는 RSA 키 쌍을 사용합니다. 플랫폼에서는 설정 → 통합 → 카탈로그 아래의 Okta (OAuth 2.0) 타일에 해당합니다. 클라이언트 자격 증명(Client Credentials)으로 Okta에 인증하려면 다음이 필요합니다.
  1. 클라이언트 ID - Okta API Services 애플리케이션의 고유 식별자입니다.
  2. 개인 키(JWK) - JSON Web Key 형식의 RSA 개인 키이며, 해당 공개 키가 Okta 애플리케이션에 등록되어 있어야 합니다.
  3. Okta 도메인 - 전체 호스트 이름이 아닌 Okta 테넌트 서브도메인만 입력합니다(예: dev-12345678).
  4. 범위 - 공백으로 구분된 Okta Management API 범위 목록입니다(예: okta.users.read okta.logs.read).
이 가이드에서는 private_key_jwt 인증을 사용하여 Okta에서 API Services 애플리케이션을 생성하는 방법을 안내합니다.

사전 요구 사항:

  • Okta 계정이 있어야 합니다. developer.okta.com에서 무료 개발자 계정에 가입할 수 있습니다.

1단계: Okta API Services 애플리케이션 생성

  1. Okta Admin Console에 로그인합니다.
  2. 왼쪽 사이드바에서 Applications > Applications로 이동합니다.
  3. Create App Integration을 클릭합니다.
  4. 로그인 방법으로 API Services를 선택하고 Next를 클릭합니다.
  1. 애플리케이션 이름을 지정하고 Save를 클릭합니다.
  2. 애플리케이션의 General 탭에서 Client ID를 확인합니다. 마지막 단계에서 필요합니다.
  3. Client authentication을 Public key / Private key로 설정합니다. okta.* 범위는 이 인증 방식에서만 지원됩니다.
  1. **Proof of possession (DPoP)**을 비활성화합니다. 지원되지 않습니다.
애플리케이션은 반드시 API Services로 생성해야 합니다.

2단계: RSA 키 쌍 생성 및 등록

Okta 키 생성기 사용
Okta는 Admin Console에서 직접 RSA 키 쌍을 생성할 수 있습니다.
  1. Admin Console에서 API Services 애플리케이션을 엽니다.
  2. General 탭으로 이동하여 PUBLIC KEYS 섹션까지 스크롤합니다.
  3. Add Key를 클릭한 다음 Generate new key를 선택합니다.
  4. Save를 클릭합니다. Okta가 키 쌍을 생성하고 **Private Key (JWK)**를 한 번만 표시합니다.
  5. 개인 키 JSON을 즉시 복사하여 저장하십시오. 다시 표시되지 않습니다.
  1. 공개 키는 애플리케이션에 자동으로 등록됩니다.
대화상자를 닫기 전에 프라이빗 JWK를 복사하십시오. 마지막 단계에서 Living Security Platform의 개인 키 필드에 붙여넣습니다.
직접 키 생성
Okta는 API Services 앱에 private_key_jwt를 사용합니다. RSA 키 쌍을 생성하고, 공개 JWK를 Okta에 등록하며, 프라이빗 JWK를 Living Security Platform에 제공합니다. 다음 Node.js 스크립트(Node.js 18 이상 필요)를 사용하여 프라이빗 JWK를 생성합니다.
Okta에 공개 JWK 등록:
  1. Admin Console에서 API Services 애플리케이션을 엽니다.
  2. General 탭으로 이동하여 PUBLIC KEYS 섹션까지 스크롤합니다.
  3. Add Key를 클릭하고, 위 스크립트가 출력한 공개 JWK JSON을 붙여넣은 다음 Save를 클릭합니다.
Living Security Platform에 붙여넣는 것은 프라이빗 JWK입니다. 여기에는 모든 키 자료(d, p, q, dp, dq, qi)와 kid가 포함되어 있습니다. 비밀로 유지하십시오.

3단계: Okta 도메인 확인

Okta 테넌트 서브도메인, 즉 .okta.com 앞부분만 입력합니다.
  • Admin Console에서 브라우저 주소 표시줄에 https://dev-12345678-admin.okta.com과 같은 URL이 표시됩니다.
  • Okta 도메인은 dev-12345678.okta.com이 아니라 서브도메인만(예: dev-12345678) 입력합니다.
  • 또는 Admin Console에서 Settings > Account로 이동하여 Okta 도메인을 확인한 다음 서브도메인 부분을 사용합니다.

4단계: 애플리케이션에 API 범위 부여

Okta는 모든 토큰 요청에 하나 이상의 범위를 요구합니다. 애플리케이션이 특정 범위를 요청하려면 먼저 해당 범위가 부여되어야 합니다.
  1. Admin Console에서 Applications > Applications로 이동하여 애플리케이션을 엽니다.
  2. Okta API Scopes 탭을 클릭합니다.
  3. 연동에 필요한 범위인 okta.users.read 및 okta.logs.read을 부여합니다.
사용 가능한 전체 범위 목록은 Okta Management API 참조에서 확인할 수 있습니다.

5단계: 애플리케이션에 관리자 역할 할당

범위를 부여하는 것만으로는 충분하지 않습니다. 애플리케이션에 관리자 역할이 없으면 Okta Management API 엔드포인트(예: /api/v1/users)는 아무런 오류 없이 빈 200 [] 응답을 반환합니다. 최소한 Read-Only Administrator를 할당해야 합니다.
  1. Admin Console에서 Security > Administrators로 이동합니다(또는 Applications > Applications > 해당 앱 > Admin roles로 이동합니다).
  2. Add administrator assignment를 클릭하고 API Services 애플리케이션을 선택합니다.
  1. Read-Only Administrator 역할(필요한 범위에 따라 그 이상의 역할)을 할당합니다.
  2. Save를 클릭합니다.
관리자 역할이 없으면 API 호출은 200 OK와 함께 성공하지만 빈 결과를 반환하며, 문제를 알려 주는 403 오류도 없습니다.

6단계: Living Security Platform에 자격 증명 입력

클라이언트 ID, 개인 키(JWK), Okta 도메인, 범위를 준비했다면 다음을 수행합니다.
  1. Okta(Client Credentials) 인증이 필요한 양식을 엽니다.
  2. 클라이언트 ID를 입력합니다.
  3. **개인 키(JWK)**를 붙여넣습니다. 위 스크립트에서 생성된 전체 JSON 객체(한 줄 또는 서식이 적용된 형태)를 붙여넣습니다.
  4. Okta 도메인을 테넌트 서브도메인만(예: dev-12345678) 입력합니다.
  5. 범위를 공백으로 구분된 목록(예: okta.users.read okta.logs.read)으로 입력합니다.
  6. 양식을 제출하면 인증이 성공적으로 완료됩니다.
이제 Okta(Client Credentials)에 연결되었습니다.
이 문서의 일부는 Nango에서 차용하여 수정한 것이며, Elastic License 2.0에 따라 사용되었습니다.