

# Okta SSO의 소스 구성
<a name="okta-sso-source-setup"></a>

## Okta SSO와 통합
<a name="okta-sso-integration"></a>

CloudWatch Pipeline은 Okta 시스템 로그 API를 사용하여 Okta SSO 테넌트에서 인증, API 활동, 탐지 결과, 엔터티 관리 이벤트를 검색합니다.

## Okta SSO로 인증
<a name="okta-sso-authentication"></a>

로그를 읽으려면 파이프라인이 Okta SSO 테넌트로 인증해야 합니다. Okta SSO의 경우, 인증은 Okta API 서비스 애플리케이션을 통해 OAuth 2.0 클라이언트 자격 증명(JWT 어설션) 흐름을 사용하여 수행됩니다.

**인증을 위한 프라이빗/퍼블릭 키 페어 생성**
+ 관리자 계정을 사용하여 Okta Admin Console에 로그인합니다.
+ Applications → Applications로 이동합니다.
+ 기존 API 서비스 애플리케이션을 선택하거나 새로 생성합니다.
+ General → Client Credentials에서 퍼블릭 키를 업로드하거나 새 키를 생성합니다. 이 키 페어는 서명된 JWT 어설션을 사용하여 인증하는 데 사용됩니다.
+ 애플리케이션에 필요한 OAuth 범위가 할당되어 있는지 확인하며, 특히 `okta.logs.read`가 있는지 확인합니다.
+ Admin Roles → Edit assignments → Role(Read-only Administrator 선택)
+ 애플리케이션의 클라이언트 ID를 복사합니다.
+ client\_id 및 client\_secret(프라이빗 키)을 AWS Secrets Manager에 `client_id` 및 `client_secret(private_key)`(JWT 어설션에 서명하는 데 사용되는 RSA 프라이빗 키)로 저장합니다.
+ Okta 조직 URL을 식별한 후 파이프라인에서 구성합니다(예: `https://yourdomain.okta.com`).

구성이 완료되면 파이프라인은 Okta의 OAuth 2.0 클라이언트 자격 증명(JWT 어설션) 흐름을 사용하여 인증한 후 Okta 시스템 로그 API에서 감사 로그 이벤트 검색을 시작할 수 있습니다.

## CloudWatch 파이프라인 구성
<a name="okta-sso-pipeline-config"></a>

로그를 읽도록 파이프라인을 구성하려면 Okta SSO를 데이터 소스로 선택합니다. Okta 도메인 이름 같은 필수 정보를 입력합니다. 파이프라인을 생성한 후 활성화하면 Okta SSO의 감사 로그 데이터가 선택한 CloudWatch Logs 로그 그룹으로 전달되기 시작합니다.

## 지원되는 Open Cybersecurity Schema Framework 이벤트 클래스
<a name="okta-sso-ocsf-events"></a>

이 통합은 OCSF 스키마 버전 v1.5.0을 지원하고 인증(3002), API 활동(6003), 탐지 결과(2004), 엔터티 관리(3004)에 매핑되는 Okta 이벤트를 지원합니다.

**인증**에는 다음 이벤트가 포함됩니다.
+ user.authentication.auth
+ user.authentication.auth\_via\_AD\_agent
+ user.authentication.auth\_via\_IDP
+ user.authentication.auth\_via\_LDAP\_agent
+ user.authentication.auth\_via\_inbound\_SAML
+ user.authentication.auth\_via\_inbound\_delauth
+ user.authentication.auth\_via\_iwa
+ user.authentication.auth\_via\_mfa
+ user.authentication.auth\_via\_radius
+ user.authentication.auth\_via\_richclient
+ user.authentication.auth\_via\_social
+ user.authentication.authenticate
+ user.authentication.sso
+ user.session.start
+ user.session.impersonation.grant
+ app.oauth2.signon
+ user.session.impersonation.initiate
+ user.authentication.universal\_logout
+ user.session.clear
+ user.session.end
+ user.authentication.slo
+ user.authentication.universal\_logout.scheduled
+ user.session.expire
+ user.session.impersonation.end
+ user.authentication.verify
+ policy.evaluate\_sign\_on
+ user.mfa.attempt\_bypass
+ user.mfa.okta\_verify
+ user.mfa.okta\_verify.deny\_push
+ user.mfa.okta\_verify.deny\_push\_upgrade\_need
+ user.mfa.factor.activate
+ user.mfa.factor.deactivate
+ user.mfa.factor.reset\_all
+ user.mfa.factor.suspend
+ user.mfa.factor.unsuspend
+ user.mfa.factor.update
+ user.session.impersonation.extend
+ user.session.impersonation.revoke
+ user.session.access\_admin\_app
+ user.session.context.change
+ application.policy.sign\_on.deny\_access
+ user.authentication.auth\_unconfigured\_identifier
+ user.authentication.dsso\_via\_non\_priority\_source
+ app.oauth2.invalid\_client\_credentials
+ policy.auth\_reevaluate.fail

**API 활동**에는 다음 이벤트가 포함됩니다.
+ oauth2.claim.created
+ oauth2.scope.created
+ security.trusted\_origin.create
+ system.api\_token.create
+ workflow.user.table.view
+ app.oauth2.as.key.rollover
+ app.saml.sensitive.attribute.update
+ system.api\_token.update
+ oauth2.claim.updated
+ oauth2.scope.updated
+ security.events.provider.deactivate
+ system.api\_token.revoke
+ oauth2.claim.deleted
+ oauth2.scope.deleted

**탐지 결과**에는 다음 이벤트가 포함됩니다.
+ security.attack.start
+ security.breached\_credential.detected
+ security.request.blocked
+ security.threat.detected
+ security.zone.make\_blacklist
+ system.rate\_limit.violation
+ user.account.report\_suspicious\_activity\_by\_enduser
+ user.risk.change
+ user.risk.detect
+ zone.make\_blacklist
+ security.attack.end

**엔터티 관리**에는 다음 이벤트가 포함됩니다.
+ iam.role.create
+ system.idp.lifecycle.create
+ application.lifecycle.create
+ group.lifecycle.create
+ user.lifecycle.create
+ policy.lifecycle.create
+ zone.create
+ oauth2.as.created
+ event\_hook.created
+ inline\_hook.created
+ pam.security\_policy.create
+ iam.resourceset.create
+ pam.secret.create
+ analytics.reports.export.download
+ app.audit\_report.download
+ system.idp.lifecycle.read\_client\_secret
+ app.oauth2.client.read\_client\_secret
+ pam.secret.reveal
+ pam.service\_account.password.reveal
+ support.org.update
+ system.idp.lifecycle.update
+ application.lifecycle.update
+ policy.lifecycle.update
+ user.account.update\_profile
+ user.account.update\_password
+ user.account.reset\_password
+ group.profile.update
+ zone.update
+ group.privilege.grant
+ group.privilege.revoke
+ iam.resourceset.bindings.add
+ user.account.privilege.grant
+ user.account.privilege.revoke
+ pki.cert.lifecycle.revoke
+ iam.resourceset.update
+ iam.role.update
+ pam.security\_policy.update
+ oauth2.as.updated
+ event\_hook.updated
+ inline\_hook.updated
+ pam.secret.update
+ iam.resourceset.bindings.delete
+ iam.role.delete
+ pam.security\_policy.delete
+ policy.lifecycle.delete
+ user.lifecycle.delete.initiated
+ application.lifecycle.delete
+ group.lifecycle.delete
+ zone.delete
+ oauth2.as.deleted
+ event\_hook.deleted
+ inline\_hook.deleted
+ iam.resourceset.delete
+ pam.secret.delete
+ device.enrollment.create
+ credentials.register
+ credentials.revoke
+ policy.lifecycle.activate
+ system.feature.enable
+ event\_hook.activated
+ inline\_hook.activated
+ system.feature.disable
+ application.lifecycle.activate
+ user.lifecycle.activate
+ zone.activate
+ oauth2.as.activated
+ system.log\_stream.lifecycle.activate
+ policy.lifecycle.deactivate
+ security.authenticator.lifecycle.deactivate
+ application.lifecycle.deactivate
+ user.lifecycle.deactivate
+ zone.deactivate
+ event\_hook.deactivated
+ inline\_hook.deactivated
+ system.log\_stream.lifecycle.deactivate
+ oauth2.as.deactivated
+ user.account.lock
+ user.account.lock.limit
+ user.lifecycle.suspend
+ device.lifecycle.suspend
+ user.account.unlock
+ user.lifecycle.unsuspend
+ device.lifecycle.unsuspend
+ user.lifecycle.reactivate