Oracle Cloud Infrastructure 감사 로그 수집

다음에서 지원:

이 문서에서는 Amazon S3를 사용하여 Oracle Cloud Infrastructure 감사 로그를 Google Security Operations로 수집하는 방법을 설명합니다.

시작하기 전에

다음 기본 요건이 충족되었는지 확인합니다.

  • Google SecOps 인스턴스
  • 다음 항목을 만들고 관리할 수 있는 권한이 있는 Oracle Cloud Infrastructure 계정
    • Service Connector Hub
    • Oracle Functions
    • 보관소 및 보안 비밀
    • 동적 그룹 및 IAM 정책
    • 로깅
  • 다음 항목을 만들고 관리할 수 있는 권한이 있는 AWS 계정
    • S3 버킷
    • IAM 사용자 및 정책

Amazon S3 버킷 만들기

  1. AWS 관리 콘솔에 로그인합니다.
  2. S3 > 버킷 만들기로 이동합니다.
  3. 다음 구성 세부정보를 제공합니다.
    • 버킷 이름: 고유한 이름 (예: oci-audit-logs-bucket)을 입력합니다.
    • AWS 리전: 리전을 선택합니다 (예: us-east-1).
    • 다른 옵션은 기본 설정을 유지합니다.
  4. 버킷 만들기를 클릭합니다.
  5. 나중에 사용할 수 있도록 버킷 이름리전을 저장합니다.

OCI Functions용 AWS에서 IAM 사용자 만들기

  1. AWS 관리 콘솔에 로그인합니다.
  2. IAM > 사용자 > 사용자 추가로 이동합니다.
  3. 다음 구성 세부정보를 제공합니다.
    • 사용자 이름: 사용자 이름을 입력합니다 (예: oci-functions-s3-user).
    • 액세스 유형: 액세스 키 - 프로그래매틱 액세스를 선택합니다.
  4. 다음: 권한을 클릭합니다.
  5. 기존 정책 직접 연결을 클릭합니다.
  6. AmazonS3FullAccess 정책을 검색하여 선택합니다.
  7. 다음: 태그를 클릭합니다.
  8. 다음: 검토를 클릭합니다.
  9. 사용자 만들기를 클릭합니다.
  10. 중요: 성공 페이지에서 다음 사용자 인증 정보를 복사하여 저장합니다.
    • 액세스 키 ID
    • 보안 비밀 액세스 키

OCI Vault에 AWS 사용자 인증 정보 저장

AWS 사용자 인증 정보를 안전하게 저장하려면 함수 코드에 하드코딩하는 대신 Oracle Cloud Infrastructure Vault를 사용해야 합니다.

보관함 및 마스터 암호화 키 만들기

  1. Oracle Cloud Console에 로그인합니다.
  2. ID 및 보안 > 볼트로 이동합니다.
  3. Vault가 없으면 Vault 만들기를 클릭합니다.
  4. 다음 구성 세부정보를 제공합니다.
    • Create in Compartment(구획에서 만들기): 구획을 선택합니다.
    • 이름: 이름을 입력합니다 (예: oci-functions-vault).
  5. 보관 파일 만들기를 클릭합니다.
  6. 보관소를 만든 후 보관소 이름을 클릭하여 엽니다.
  7. 마스터 암호화 키에서 키 만들기를 클릭합니다.
  8. 다음 구성 세부정보를 제공합니다.
    • 보호 모드: 소프트웨어
    • 이름: 이름을 입력합니다 (예: oci-functions-key).
    • 키 모양: 알고리즘: AES
    • 키 모양: 길이: 256비트
  9. 키 만들기를 클릭합니다.

AWS 사용자 인증 정보의 보안 비밀 만들기

  1. 보관함의 보안 비밀에서 보안 비밀 만들기를 클릭합니다.
  2. AWS 액세스 키에 대해 다음 구성 세부정보를 제공합니다.
    • Create in Compartment(구획에서 만들기): 구획을 선택합니다.
    • 이름: aws-access-key
    • 설명: S3용 AWS 액세스 키
    • 암호화 키: 생성한 마스터 암호화 키를 선택합니다.
    • 보안 비밀 유형 콘텐츠: 일반 텍스트
    • Secret Contents(보안 비밀 콘텐츠): AWS 액세스 키 ID를 붙여넣습니다.
  3. 보안 비밀 만들기를 클릭합니다.
  4. 이 보안 비밀의 OCID를 복사하여 저장합니다 (ocid1.vaultsecret.oc1...와 유사함).
  5. 보안 비밀 만들기를 다시 클릭하여 두 번째 보안 비밀을 만듭니다.
  6. AWS 보안 비밀 키에 대한 다음 구성 세부정보를 제공합니다.
    • Create in Compartment(구획에서 만들기): 구획을 선택합니다.
    • 이름: aws-secret-key
    • 설명: S3용 AWS 보안 키
    • 암호화 키: 동일한 마스터 암호화 키를 선택합니다.
    • Secret Type Contents: Plain-Text
    • Secret Contents(보안 비밀 콘텐츠): AWS 보안 비밀 액세스 키를 붙여넣습니다.
  7. 보안 비밀 만들기를 클릭합니다.
  8. 이 보안 비밀의 OCID를 복사하여 저장합니다.

OCI 함수용 동적 그룹 만들기

  1. Oracle Cloud Console에 로그인합니다.
  2. ID 및 보안 > ID > 동적 그룹으로 이동합니다.
  3. 동적 그룹 만들기를 클릭합니다.
  4. 다음 구성 세부정보를 제공합니다.

    • 이름: oci-functions-dynamic-group
    • 설명: OCI 함수가 Vault 보안 비밀에 액세스하는 데 사용되는 동적 그룹
    • 일치 규칙: 다음 규칙을 입력합니다 (<your_compartment_ocid>을 컴파트먼트 OCID로 바꿈).

      ALL {resource.type = 'fnfunc', resource.compartment.id = '<your_compartment_ocid>'}
      
  5. 만들기를 클릭합니다.

Vault 액세스를 위한 IAM 정책 만들기

  1. Oracle Cloud Console에 로그인합니다.
  2. ID 및 보안 > ID > 정책으로 이동합니다.
  3. 정책을 만들 컴파트먼트를 선택합니다.
  4. 정책 만들기를 클릭합니다.
  5. 다음 구성 세부정보를 제공합니다.

    • 이름: oci-functions-vault-access-policy
    • 설명: OCI Functions가 Vault에서 보안 비밀을 읽도록 허용
    • 정책 빌더: 수동 편집기 표시를 전환합니다.
    • 정책 설명문: 다음을 입력합니다 (<compartment_name>을 컴파트먼트 이름으로 바꿈).

      allow dynamic-group oci-functions-dynamic-group to manage secret-family in compartment <compartment_name>
      
  6. 만들기를 클릭합니다.

OCI 함수 애플리케이션 만들기

  1. Oracle Cloud Console에 로그인합니다.
  2. 개발자 서비스 > 애플리케이션 (함수 아래)으로 이동합니다.
  3. 애플리케이션 만들기를 클릭합니다.
  4. 다음 구성 세부정보를 제공합니다.
    • 이름: 이름을 입력합니다 (예: oci-logs-to-s3-app).
    • VCN: 컴파트먼트에서 VCN을 선택합니다.
    • 서브넷: 하나 이상의 서브넷을 선택합니다.
  5. 만들기를 클릭합니다.

OCI 함수 만들기 및 배포

  1. Oracle Cloud 콘솔의 오른쪽 상단에 있는 Cloud Shell 아이콘을 클릭합니다.
  2. Cloud Shell이 초기화될 때까지 기다립니다.

함수 만들기

  1. Cloud Shell에서 함수를 위한 새 디렉터리를 만듭니다.

    mkdir pushlogs
    cd pushlogs
    
  2. 새 Python 함수를 초기화합니다.

    fn init --runtime python
    
  3. 이렇게 하면 func.py, func.yaml, requirements.txt의 세 파일이 생성됩니다.

func.py 업데이트

  • func.py의 내용을 다음 코드로 바꿉니다.

    import io
    import json
    import logging
    import boto3
    import oci
    import base64
    import os
    from fdk import response
    
    def handler(ctx, data: io.BytesIO = None):
        """
        OCI Function to push audit logs from OCI Logging to AWS S3
        """
        try:
            # Parse incoming log data from Service Connector
            funDataStr = data.read().decode('utf-8')
            funData = json.loads(funDataStr)
    
            logging.getLogger().info(f"Received {len(funData)} log entries")
    
            # Replace these with your actual OCI Vault secret OCIDs
            secret_key_id = "ocid1.vaultsecret.oc1..<your_secret_key_ocid>"
            access_key_id = "ocid1.vaultsecret.oc1..<your_access_key_ocid>"
    
            # Replace with your S3 bucket name
            s3_bucket_name = "oci-audit-logs-bucket"
    
            # Use Resource Principals for OCI authentication
            signer = oci.auth.signers.get_resource_principals_signer()
            secret_client = oci.secrets.SecretsClient({}, signer=signer)
    
            def read_secret_value(secret_client, secret_id):
                """Retrieve and decode secret value from OCI Vault"""
                response = secret_client.get_secret_bundle(secret_id)
                base64_secret_content = response.data.secret_bundle_content.content
                base64_secret_bytes = base64_secret_content.encode('ascii')
                base64_message_bytes = base64.b64decode(base64_secret_bytes)
                secret_content = base64_message_bytes.decode('ascii')
                return secret_content
    
            # Retrieve AWS credentials from OCI Vault
            awsaccesskey = read_secret_value(secret_client, access_key_id)
            awssecretkey = read_secret_value(secret_client, secret_key_id)
    
            # Initialize boto3 session with AWS credentials
            session = boto3.Session(
                aws_access_key_id=awsaccesskey,
                aws_secret_access_key=awssecretkey
            )
            s3 = session.resource('s3')
    
            # Process each log entry
            for i in range(0, len(funData)):
                # Use timestamp as filename
                filename = funData[i].get('time', f'log_{i}')
                # Remove special characters from filename
                filename = filename.replace(':', '-').replace('.', '-')
    
                logging.getLogger().info(f"Processing log entry: {filename}")
    
                # Write log entry to temporary file
                temp_file = f'/tmp/{filename}.json'
                with open(temp_file, 'w', encoding='utf-8') as f:
                    json.dump(funData[i], f, ensure_ascii=False, indent=4)
    
                # Upload to S3
                s3_key = f'{filename}.json'
                s3.meta.client.upload_file(
                    Filename=temp_file,
                    Bucket=s3_bucket_name,
                    Key=s3_key
                )
    
                logging.getLogger().info(f"Uploaded {s3_key} to S3 bucket {s3_bucket_name}")
    
                # Clean up temporary file
                os.remove(temp_file)
    
            return response.Response(
                ctx,
                response_data=json.dumps({
                    "status": "success",
                    "processed_logs": len(funData)
                }),
                headers={"Content-Type": "application/json"}
            )
    
        except Exception as e:
            logging.getLogger().error(f"Error processing logs: {str(e)}")
            return response.Response(
                ctx,
                response_data=json.dumps({
                    "status": "error",
                    "message": str(e)
                }),
                headers={"Content-Type": "application/json"},
                status_code=500
            )
    
    • secret_key_id를 AWS 보안 비밀 키의 실제 볼트 보안 비밀 OCID로 바꿉니다.
    • access_key_id를 AWS 액세스 키의 실제 볼트 보안 비밀 OCID로 바꿉니다.
    • s3_bucket_name을 실제 S3 버킷 이름으로 바꿉니다.

func.yaml 업데이트

func.yaml의 내용을 다음으로 바꿉니다.

  schema_version: 20180708
  name: pushlogs
  version: 0.0.1
  runtime: python
  build_image: fnproject/python:3.9-dev
  run_image: fnproject/python:3.9
  entrypoint: /python/bin/fdk /function/func.py handler
  memory: 256

requirements.txt 업데이트

  • requirements.txt의 내용을 다음으로 바꿉니다.

    fdk>=0.1.56
    boto3
    oci
    

함수 배포하기

  1. 애플리케이션을 사용하도록 Fn 컨텍스트를 설정합니다.

    fn use context <region-context>
    fn update context oracle.compartment-id <compartment-ocid>
    
  2. 함수를 배포합니다.

    fn -v deploy --app oci-logs-to-s3-app
    
  3. 배포가 완료될 때까지 기다립니다. 함수가 성공적으로 배포되었음을 나타내는 출력이 표시됩니다.

  4. 함수가 생성되었는지 확인합니다.

    fn list functions oci-logs-to-s3-app
    

OCI 감사 로그를 함수로 전송하는 서비스 커넥터 만들기

  1. Oracle Cloud Console에 로그인합니다.
  2. 분석 및 AI > 메시지 > 서비스 커넥터 허브로 이동합니다.
  3. 서비스 커넥터를 만들려는 컴파트먼트를 선택합니다.
  4. 서비스 커넥터 만들기를 클릭합니다.

서비스 커넥터 세부정보 구성

  1. 다음 구성 세부정보를 제공합니다.

서비스 커넥터 정보: * 커넥터 이름: 설명이 포함된 이름을 입력합니다 (예: audit-logs-to-s3-connector). * 설명: 선택사항 설명 (예: 'OCI 감사 로그를 AWS S3로 전달') * 리소스 컴파트먼트: 컴파트먼트를 선택합니다.

소스 구성

  1. 소스 구성에서 다음 단계를 따르세요.
    • 소스: 로깅을 선택합니다.
    • 컴파트먼트: 감사 로그가 포함된 컴파트먼트를 선택합니다.
    • 로그 그룹: _Audit를 선택합니다 (감사 로그의 기본 로그 그룹임).
    • 로그: + 다른 로그를 클릭합니다.
    • 구획의 감사 로그를 선택합니다 (예: _Audit_Include_Subcompartment).

타겟 구성

  1. 타겟 구성에서 다음을 수행합니다.
    • 타겟: 함수를 선택합니다.
    • Compartment: 함수 애플리케이션이 포함된 컴파트먼트를 선택합니다.
    • 함수 애플리케이션: oci-logs-to-s3-app (이전에 만든 애플리케이션)을 선택합니다.
    • 함수: pushlogs (배포한 함수)를 선택합니다.

정책 구성

  1. 정책 구성에서 다음을 수행합니다.

    • 표시된 필수 IAM 정책 문을 검토합니다.
    • 만들기를 클릭하여 필수 정책을 자동으로 만듭니다.
  2. 만들기를 클릭하여 서비스 커넥터를 만듭니다.

  3. 서비스 커넥터가 생성되고 활성화될 때까지 기다립니다. 상태가 활성으로 변경됩니다.

로그가 AWS S3로 푸시되는지 확인

  1. Oracle Cloud Console에 로그인합니다.
  2. 감사 로그를 생성하는 작업을 수행합니다 (예: 리소스 생성 또는 수정).
  3. 로그가 처리될 때까지 2~5분 정도 기다립니다.
  4. AWS 관리 콘솔에 로그인합니다.
  5. S3 > 버킷으로 이동합니다.
  6. 버킷 (예: oci-audit-logs-bucket)을 클릭합니다.
  7. JSON 로그 파일이 버킷에 표시되는지 확인합니다.

Google SecOps용 AWS S3 버킷 및 IAM 구성

Chronicle용 IAM 사용자 만들기

  1. AWS 관리 콘솔에 로그인합니다.
  2. IAM > 사용자 > 사용자 추가로 이동합니다.
  3. 다음 구성 세부정보를 제공합니다.
    • 사용자 이름: chronicle-s3-reader를 입력합니다.
    • 액세스 유형: 액세스 키 - 프로그래매틱 액세스를 선택합니다.
  4. 다음: 권한을 클릭합니다.
  5. 기존 정책 직접 연결을 클릭합니다.
  6. AmazonS3ReadOnlyAccess 정책을 검색하여 선택합니다.
  7. 다음: 태그를 클릭합니다.
  8. 다음: 검토를 클릭합니다.
  9. 사용자 만들기를 클릭합니다.
  10. CSV 파일 다운로드를 클릭하여 액세스 키 ID보안 비밀 액세스 키를 저장합니다.
  11. 닫기를 클릭합니다.

선택사항: 최소 권한 액세스를 위한 맞춤 IAM 정책 만들기

특정 버킷에 대한 액세스만 제한하려면 다음 단계를 따르세요.

  1. IAM > 정책 > 정책 만들기로 이동합니다.
  2. JSON 탭을 클릭합니다.
  3. 다음 정책을 입력합니다.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "s3:GetObject",
            "s3:ListBucket"
          ],
          "Resource": [
            "arn:aws:s3:::oci-audit-logs-bucket",
            "arn:aws:s3:::oci-audit-logs-bucket/*"
          ]
        }
      ]
    }
    
    • 여기에서 oci-audit-logs-bucket을 내 버킷 이름으로 바꿉니다.
  4. 다음: 태그를 클릭합니다.

  5. 다음: 검토를 클릭합니다.

  6. 다음 구성 세부정보를 제공합니다.

    • 이름: chronicle-s3-read-policy
    • 설명: OCI 감사 로그 버킷에 대한 읽기 전용 액세스
  7. 정책 만들기를 클릭합니다.

  8. IAM> 사용자로 돌아가 chronicle-s3-reader 사용자를 선택합니다.

  9. 권한 추가 > 정책 직접 연결을 클릭합니다.

  10. chronicle-s3-read-policy을 검색하여 선택합니다.

  11. 이전에 추가한 AmazonS3ReadOnlyAccess 정책을 삭제합니다.

  12. 권한 추가를 클릭합니다.

Oracle Cloud 감사 로그를 수집하도록 Google SecOps에서 피드 구성

  1. SIEM 설정> 피드로 이동합니다.
  2. 새 피드 추가를 클릭합니다.
  3. 다음 페이지에서 단일 피드 구성을 클릭합니다.
  4. 피드 이름 필드에 피드 이름을 입력합니다(예: Oracle Cloud Audit Logs).
  5. 소스 유형으로 Amazon S3 V2를 선택합니다.
  6. 로그 유형으로 Oracle Cloud Infrastructure를 선택합니다.
  7. 다음을 클릭합니다.
  8. 다음 입력 파라미터의 값을 지정합니다.
    • S3 URI: S3 버킷 URI (예: s3://oci-audit-logs-bucket/)를 입력합니다.
    • 소스 삭제 옵션: 환경설정에 따라 삭제 옵션을 선택합니다.
      • 없음: 테스트 및 초기 설정에 권장됩니다.
      • 전송된 파일 삭제: 수집이 완료되면 파일을 삭제합니다 (스토리지 비용을 관리하기 위해 프로덕션에 사용).
    • 최대 파일 기간: 지난 일수 동안 수정된 파일을 포함합니다. 기본값은 180일입니다.
    • 액세스 키 ID: 만든 Chronicle IAM 사용자의 액세스 키 ID를 입력합니다.
    • 보안 비밀 액세스 키: 생성한 Chronicle IAM 사용자의 보안 비밀 액세스 키를 입력합니다.
    • 애셋 네임스페이스: 애셋 네임스페이스입니다.
    • 수집 라벨: 이 피드의 이벤트에 적용할 라벨입니다.
  9. 다음을 클릭합니다.
  10. 확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.

UDM 매핑 테이블

로그 필드 UDM 매핑 논리
data.request.headers.authorization.0 event.idm.read_only_udm.additional.fields data.request.headers.authorization.0에서 가져온 값으로, 키가 'Request Headers Authorization'인 키-값 쌍으로 추가됩니다.
data.compartmentId event.idm.read_only_udm.additional.fields data.compartmentId에서 가져온 값이 키가 'compartmentId'인 키-값 쌍으로 추가됩니다.
data.compartmentName event.idm.read_only_udm.additional.fields data.compartmentName에서 가져온 값이 키가 'compartmentName'인 키-값 쌍으로 추가됩니다.
data.response.headers.Content-Length.0 event.idm.read_only_udm.additional.fields data.response.headers.Content-Length.0에서 가져온 값으로, 키가 'Response Headers Content-Length'인 키-값 쌍으로 추가됩니다.
data.response.headers.Content-Type.0 event.idm.read_only_udm.additional.fields data.response.headers.Content-Type.0에서 가져온 값이 키가 'Response Headers Content-Type'인 키-값 쌍으로 추가됩니다.
data.eventGroupingId event.idm.read_only_udm.additional.fields data.eventGroupingId에서 가져온 값이 키가 'eventGroupingId'인 키-값 쌍으로 추가됩니다.
oracle.tenantid, data.identity.tenantId event.idm.read_only_udm.additional.fields 값이 있는 경우 oracle.tenantid에서 가져오고, 그렇지 않으면 data.identity.tenantId에서 가져옵니다. 키가 'tenantId'인 키-값 쌍으로 추가됩니다.
data.message event.idm.read_only_udm.metadata.description data.message에서 가져온 값입니다.
time event.idm.read_only_udm.metadata.event_timestamp time에서 가져온 값으로, ISO8601 타임스탬프로 파싱됩니다.
event.idm.read_only_udm.metadata.event_type 기본적으로 GENERIC_EVENT로 설정합니다. 주체 (IP 또는 호스트 이름)와 대상 IP가 있는 경우 NETWORK_CONNECTION로 설정됩니다. 주 구성원만 있는 경우 STATUS_UPDATE으로 설정됩니다.
time event.idm.read_only_udm.metadata.ingested_timestamp oracle.ingestedtime이 비어 있지 않으면 값이 time 필드에서 가져와 ISO8601 타임스탬프로 파싱됩니다.
oracle.tenantid event.idm.read_only_udm.metadata.product_deployment_id oracle.tenantid에서 가져온 값입니다.
type event.idm.read_only_udm.metadata.product_event_type type에서 가져온 값입니다.
oracle.logid event.idm.read_only_udm.metadata.product_log_id oracle.logid에서 가져온 값입니다.
specversion event.idm.read_only_udm.metadata.product_version specversion에서 가져온 값입니다.
data.request.action event.idm.read_only_udm.network.http.method data.request.action에서 가져온 값입니다.
data.identity.userAgent event.idm.read_only_udm.network.http.parsed_user_agent data.identity.userAgent에서 가져와 파싱된 값입니다.
data.response.status event.idm.read_only_udm.network.http.response_code data.response.status에서 가져와 정수로 변환된 값입니다.
data.protocol event.idm.read_only_udm.network.ip_protocol data.protocol의 숫자 값이 문자열 표현으로 변환됩니다 (예: 6은 'TCP'가 되고 17은 'UDP'가 됩니다.
data.bytesOut event.idm.read_only_udm.network.sent_bytes data.bytesOut에서 가져와 부호 없는 정수로 변환된 값입니다.
data.packets event.idm.read_only_udm.network.sent_packets data.packets에서 가져와 정수로 변환된 값입니다.
data.identity.consoleSessionId event.idm.read_only_udm.network.session_id data.identity.consoleSessionId에서 가져온 값입니다.
id event.idm.read_only_udm.principal.asset.product_object_id id에서 가져온 값입니다.
source event.idm.read_only_udm.principal.hostname source에서 가져온 값입니다.
data.sourceAddress, data.identity.ipAddress event.idm.read_only_udm.principal.ip data.sourceAddressdata.identity.ipAddress의 값이 이 필드로 병합됩니다.
data.sourcePort event.idm.read_only_udm.principal.port data.sourcePort에서 가져와 정수로 변환된 값입니다.
data.request.headers.X-Forwarded-For.0 event.idm.read_only_udm.principal.resource.attribute.labels data.request.headers.X-Forwarded-For.0에서 가져온 값이 키가 'x forward'인 키-값 쌍으로 추가됩니다.
oracle.compartmentid event.idm.read_only_udm.principal.resource.attribute.labels oracle.compartmentid에서 가져온 값이 키가 'compartmentid'인 키-값 쌍으로 추가됩니다.
oracle.loggroupid event.idm.read_only_udm.principal.resource.attribute.labels oracle.loggroupid에서 가져온 값이 키가 'loggroupid'인 키-값 쌍으로 추가됩니다.
oracle.vniccompartmentocid event.idm.read_only_udm.principal.resource.attribute.labels oracle.vniccompartmentocid에서 가져온 값으로, 키가 'vniccompartmentocid'인 키-값 쌍으로 추가됩니다.
oracle.vnicocid event.idm.read_only_udm.principal.resource.attribute.labels oracle.vnicocid에서 가져온 값이 키가 'vnicocid'인 키-값 쌍으로 추가됩니다.
oracle.vnicsubnetocid event.idm.read_only_udm.principal.resource.attribute.labels oracle.vnicsubnetocid에서 가져온 값이 키가 'vnicsubnetocid'인 키-값 쌍으로 추가됩니다.
data.flowid event.idm.read_only_udm.principal.resource.product_object_id data.flowid에서 가져온 값입니다.
data.identity.credentials event.idm.read_only_udm.principal.user.attribute.labels data.identity.credentials에서 가져온 값이 키가 'credentials'인 키-값 쌍으로 추가됩니다.
data.identity.principalName event.idm.read_only_udm.principal.user.user_display_name data.identity.principalName에서 가져온 값입니다.
data.identity.principalId event.idm.read_only_udm.principal.user.userid data.identity.principalId에서 가져온 값입니다.
data.action event.idm.read_only_udm.security_result.action 기본적으로 UNKNOWN_ACTION로 설정합니다. data.action이 'REJECT'인 경우 이 값이 BLOCK으로 설정됩니다. data.action가 'ACCEPT'인 경우 ALLOW로 설정됩니다.
data.endTime event.idm.read_only_udm.security_result.detection_fields data.endTime에서 가져온 값으로, 키가 'endTime'인 키-값 쌍으로 추가됩니다.
data.startTime event.idm.read_only_udm.security_result.detection_fields data.startTime에서 가져온 값으로, 키가 'startTime'인 키-값 쌍으로 추가됩니다.
data.status event.idm.read_only_udm.security_result.detection_fields data.status에서 가져온 값이 키가 'status'인 키-값 쌍으로 추가됩니다.
data.version event.idm.read_only_udm.security_result.detection_fields data.version에서 가져온 값이 키가 'version'인 키-값 쌍으로 추가됩니다.
data.destinationAddress event.idm.read_only_udm.target.ip data.destinationAddress에서 가져온 값입니다.
data.destinationPort event.idm.read_only_udm.target.port data.destinationPort에서 가져와 정수로 변환된 값입니다.
data.request.path event.idm.read_only_udm.target.url data.request.path에서 가져온 값입니다.
event.idm.read_only_udm.metadata.product_name 'ORACLE CLOUD AUDIT'으로 설정합니다.
event.idm.read_only_udm.metadata.vendor_name 'ORACLE'로 설정합니다.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.