주:
- 이 자습서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 자격 증명, 테넌시 및 구획에 예제 값을 사용합니다. 실습을 완료했으면 이러한 값을 자신의 클라우드 환경과 관련된 값으로 대체하십시오.
Oracle Cloud Infrastructure 감사에서 Identity and Access Management 보고서 생성
소개
Oracle Cloud Infrastructure(OCI) Identity Domains는 Oracle Identity Cloud Service의 후계자이며 Oracle Identity Cloud Service의 모든 기능을 핵심 Oracle Cloud Infrastructure 서비스로 제공합니다. Oracle Identity Cloud Service는 자체 포함된 SaaS와 유사한 오퍼링으로, 서비스 내에서 사용자 활동에 대한 보고서 등을 제공합니다.
Oracle Identity Cloud Service와 달리 OCI Identity Domains는 더 큰 OCI 컨텍스트 내에 존재합니다. OCI 설계 원칙은 가능한 경우 공통 서비스 기능을 사용하는 것입니다. 따라서 Oracle Identity Cloud Service 내에서 제공되는 일부 보고서는 이제 OCI Audit에서 제공하는 공통 서비스 기능을 통해 활용된 데이터를 사용할 수 있으므로 더 이상 사용되지 않습니다.
이 사용지침서에서는 OCI 감사(audit) 데이터에서 더 이상 사용되지 않는 보고서를 생성하고 이러한 보고서를 OCI 대시보드에서 사용할 수 있도록 설정하는 방법을 보여줍니다.
목표
-
OCI IAM 보고서에 대한 OCI 로깅에서 저장된 검색을 생성합니다.
-
오프라인 처리를 위해 OCI IAM 보고서를 익스포트합니다.
-
해당 검색을 OCI 대시보드에 추가합니다.
필요 조건
- OCI IAM 도메인(기본 도메인의 테넌시 루트)이 포함된 컴파트먼트에 대한 감사 데이터를 읽을 수 있는 권한입니다.
작업 1: OCI Identity and Access Management 감사 이벤트 살펴보기
모든 OCI 서비스는 사용자 또는 서비스 작업에 대한 감사 레코드를 생성하고, OCI IAM은 예외가 아니며, 사용자 액세스에 대한 감사 레코드를 생성하고, OCI IAM 내에서 발생하는 모든 변경 또는 이벤트를 생성합니다.
-
OCI 콘솔의 관찰 및 관리 기능 아래에서 로깅 서비스에 액세스한 다음 검색 섹션을 선택합니다.
-
로그 검색에 대한 컨텍스트를 보고서를 생성할 OCI IAM ID 도메인이 포함된 컴파트먼트로 설정하려면 검색할 로그 선택을 누릅니다.
관련 컴파트먼트를 선택하면 사용자 또는 서비스 작업에 대한 항목이 여러 개 표시되며, 테넌시 사용 방식에 따라 특정 항목이 달라집니다. 본인 또는 다른 로그인 이벤트가 표시될 수도 있습니다. 항목이 표시되지 않으면 추가 검색 옵션을 확장하여 올바른 영역이 선택되었는지 확인하거나, 시간별 필터링 설정을 수정하여 시간 창을 확장합니다.
-
고급 모드 표시를 눌러 자유 텍스트 질의를 입력하는 기능을 가져온 다음 기본 질의 끝에 다음 중 하나를 추가합니다('sort by datetime desc' 뒤). 그러면 Oracle Identity Cloud Service 보고서에 포함된 것과 동일한 콘텐츠가 생성됩니다.
보고서 질의 성공한 로그인 보고서 | 여기서 data.additionalDetails.eventId = 'sso.session.create.success' | data.additionalDetails.domainDisplayName를 도메인으로, data.additionalDetails.actorName를 로그인으로, data.additionalDetails.eventId를 결과로, data.additionalDetails.ssoRp를 제공자로, time_format(datetime, 'yyyy-MM-dd hh:mm:ss z')를 날짜로 선택합니다. 실패한 로그인 보고서 | 설명: data.additionalDetails.eventId='sso.authentication.failure' | 도메인으로 data.additionalDetails.domainDisplayName, 사용자로 data.additionalDetails.actorName, 결과로 data.additionalDetails.eventId, 설명으로 data.message, 날짜로 time_format(datetime, 'yyyy-MM-dd hh:mm:ss z')를 선택합니다. 애플리케이션 액세스 보고서 | 설명: data.additionalDetails.eventId = 'sso.session.create.success' 또는 data.additionalDetails.eventId = 'sso.authentication.failure' 또는 data.additionalDetails.eventId = 'sso.session.modify.success' | data.additionalDetails.domainDisplayName를 도메인으로, data.additionalDetails.actorDisplayName를 사용자로, data.additionalDetails.actorName를 로그인으로, data.additionalDetails.eventId를 "Success/Failure", data.additionalDetails.ssoRp을 애플리케이션으로, time_format(datetime, 'yyyy-MM-dd hh:mm:ss z')를 일자로 선택 감사 로그 보고서 | where data.additionalDetails.eventId = ‘sso.app.access.success’ or data.additionalDetails.eventId = ‘sso.app.access.failure’ or data.additionalDetails.eventId = ‘sso.session.create.success’ or data.additionalDetails.eventId = ‘sso.authentication.failure’ or data.additionalDetails.eventId = ‘sso.session.delete.success’ or data.additionalDetails.eventId = ‘admin.user.create.success’ or data.additionalDetails.eventId = ‘admin.user.activated.success’ or data.additionalDetails.eventId = ‘admin.user.deactivated.success’ or data.additionalDetails.eventId = ‘admin.user.update.success’ or data.additionalDetails.eventId = ‘admin.user.delete.success’ or data.additionalDetails.eventId = ‘admin.user.password.reset.success’ or data.additionalDetails.eventId = ‘admin.me.password.reset.success’ or data.additionalDetails.eventId = ‘admin.me.password.change.success’ or data.additionalDetails.eventId = ‘admin.policy.create.success’ or data.additionalDetails.eventId = ‘admin.rule.create.success’ or data.additionalDetails.eventId = ‘admin.policy.update.success’ or data.additionalDetails.eventId = ‘admin.rule.update.success’ or data.additionalDetails.eventId = ‘admin.passwordpolicy.create.success’ or data.additionalDetails.eventId = ‘admin.passwordpolicy.update.success’ or data.additionalDetails.eventId = ‘admin.grant.create.success’ or data.additionalDetails.eventId = ‘admin.grant.delete.success’ or data.additionalDetails.eventId = ‘admin.group.create.success’ or data.additionalDetails.eventId = ‘admin.group.add.member.success’ or data.additionalDetails.eventId = ‘admin.group.remove.member.success’ or data.additionalDetails.eventId = ‘admin.group.delete.success’ or data.additionalDetails.eventId = ‘admin.app.create.success’ or data.additionalDetails.eventId = ‘admin.app.update.success’ or data.additionalDetails.eventId = ‘admin.app.delete.success’ or data.additionalDetails.eventId = ‘admin.app.activated.success’ or data.additionalDetails.eventId = ‘admin.app.deactivated.success’ or data.additionalDetails.eventId = ‘notification.delivery.success’ or data.additionalDetails.eventId = ‘notification.delivery.failure’ or data.additionalDetails.eventId = ‘sso.auth.factor.initiated’ or data.additionalDetails.eventId = ‘sso.bypasscode.create.success’ | select time_format(datetime, ‘yyyy-MM-dd hh:mm:ss z’) as Date, data.additionalDetails.domainDisplayName as Domain, data.additionalDetails.actorName as Actor, data.additionalDetails.eventId as “Event Id”, data.message as “Event Description”, data.additionalDetails.adminResourceName as Target 앱 롤 지정 보고서 | 설명: data.additionalDetails.eventId = 'admin.approle.add.member.success' or data.additionalDetails.eventId = 'admin.approle.remove.member.success' | select data.additionalDetails.domainDisplayName as Domain, data.additionalDetails.actorDisplayName as Approver, data.additionalDetails.adminAppRoleAppName as "Application Name", data.additionalDetails.adminRefResourceName as Beneficiary, data.additionalDetails.adminRefResourceType as "User/Group", data.additionalDetails.adminResourceName as "Application Role Name", time_format(datetime, 'yyyy-MM-dd hh:mm:ss z') as Date, data.additionalDetails.eventId as "Added/Removed" 예를 들어,
Successful Logins
보고서의 경우 질의는 아래와 유사합니다. -
업데이트된 질의를 사용하려면 검색을 누릅니다. 결과가 반환되지 않으면 시간 필터를 수정해야 할 수 있습니다.
-
결과 위의 작업 드롭다운에서 로그 데이터 익스포트(JSON)를 눌러 반환된 결과를 익스포트할 수 있습니다.
주: Oracle Identity Cloud Service는
CSV
파일로 다운로드가 지원되고, 이 익스포트는JSON
익스포트만 지원하지만, 위의 질의에 사용된 select 문은JSON
를 속성이 포함된 단일 객체로 단순화하여 필요한 경우JSON
익스포트와CSV
간에 변환할 수 있도록 합니다.
작업 2: 보고서에 대해 저장된 검색 생성
이러한 보고서에 액세스할 때마다 질의를 다시 입력하지 않도록 하려면 OCI Logging의 저장된 검색 기능을 활용할 수 있습니다.
-
질의를 검증한 후 검색 저장을 눌러 질의를 재사용하여 대시보드에 포함시킬 수 있습니다.
-
검색 이름(예: 'Successful_Login_Report' 또는 유사한 이름)과 설명을 입력하고 저장을 누릅니다.
-
저장된 검색 인터페이스에서 검색으로 다시 눌러 최신 데이터 세트를 가져올 수 있습니다.
주: 저장된 검색 인터페이스에서 결과를 직접 익스포트할 수 없습니다. 대신 작업 드롭다운에서 로그 검색으로 탐색을 사용한 다음 검색 뷰에서 결과를 익스포트해야 합니다.
작업 3: OCI 대시보드에 보고서 추가
OCI 로깅 서비스 내에서 보고서에 액세스하는 것 외에도 OCI의 대시보드 기능을 통해 보고서를 사용할 수 있어 OCI IAM 이벤트를 중앙에서 검토할 수 있습니다.
-
OCI 콘솔 랜딩 페이지로 이동하여 상단 배너에서 Oracle Cloud를 누른 다음 대시보드 뷰로 스왑합니다.
-
새 대시보드를 눌러 OCI IAM 보고서에 대한 새 대시보드를 생성합니다.
-
스크래치에서 작성을 선택하고 적절한 이름과 설명을 추가합니다.
-
새 대시보드 그룹을 생성하거나 해당하는 경우 이 대시보드를 기존 그룹에 지정합니다.
-
위젯 추가를 누른 다음 로깅 데이터 테이블을 선택하고 새 위젯에서 구성을 누릅니다.
-
적절한 이름을 제공한 다음 저장된 검색을 선택합니다. 적절한 기본 기간을 추가합니다.
-
레이아웃을 수정하고 다른 저장된 검색을 적절하게 추가합니다.
보고서 데이터 추출 자동화
위의 접근 방법은 IAM 데이터에 대한 임시 보고를 수행하는 기능을 제공합니다. 그러나 진행 중인 작업의 경우 이 데이터 추출을 자동화해야 할 수도 있습니다. 이를 위해 OCI API, OCI CLI 또는 OCI SDK 중 하나를 활용할 수 있습니다.
다음과 유사한 요청을 사용하여 SearchLogs API를 호출할 수 있습니다. 시간범위를 조정하고 초기 로그 검색에서 질의를 추가합니다.
POST https://logging.<region>.oci.oraclecloud.com/20190909/search?limit=1000
Body:
{
"timeStart": "2025-01-01T00:00:00.000Z",
"timeEnd": "2025-01-02T00:00:00.000Z",
"searchQuery": "<log search query from Task #1>",
"isReturnFieldInfo": false
}
동일한 OCI CLI 명령은 다음과 같습니다.
oci logging-search search-logs --search-query "<log search query from Task #1>" --time-start "2025-01-01T00:00:00.000Z" --time-end "2025-01-02T00:00:00.000Z" --is-return-field-info false
참고: 백슬래시(
\
)를 사용하여 검색 질의에서 큰따옴표("
)를 이스케이프합니다. 즉,as "Success/Failure"
가as \"Success/Failure\"
가 됩니다.
감사 이벤트를 대체 시스템으로 푸시하려는 경우 OCI Connector Hub 또는 OCI Events를 사용하여 Azure Sentinel로의 감사 전달을 다루는 OCI Audit을 사용하여 멀티클라우드 보안 구현과 같은 로그 전달을 용이하게 할 수 있습니다.
관련 링크
확인
- Authors - Manoj Gaddam(Principal Product Manager - OCI Identity/IDCS), Callan Howell-Pavia(Principal Member of Technical Staff - OCI Identity/IDCS)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Generate Identity and Access Management Reports from Oracle Cloud Infrastructure Audit
F89549-02
January 2025