Db2 감사 로깅 - Amazon Relational Database Service

Db2 감사 로깅

Db2 감사 로깅을 사용하면 Amazon RDS는 사용자의 데이터베이스 로그온, 데이터베이스에 대해 실행되는 쿼리 등의 데이터베이스 활동을 기록합니다. RDS는 사용자가 제공한 AWS Identity and Access Management(IAM) 역할을 사용하여 완료된 감사 로그를 Amazon S3 버킷에 업로드합니다.

Db2 감사 로깅 설정

Amazon RDS for Db2 데이터베이스에 대한 감사 로깅을 활성화하려면 RDS for Db2 DB 인스턴스에서 DB2_AUDIT 옵션을 활성화합니다. 그런 다음 특정 데이터베이스에 대해 기능을 활성화하도록 감사 정책을 구성합니다. RDS for Db2 DB 인스턴스에서 옵션을 활성화하려면 DB2_AUDIT 옵션에 대한 옵션 설정을 구성합니다. Amazon S3 버킷의 Amazon 리소스 이름(ARN)과 버킷에 액세스할 수 있는 권한이 있는 IAM 역할을 제공하면 됩니다.

RDS for Db2 데이터베이스에 대해 Db2 감사 로깅을 설정하려면 다음 단계를 완료합니다.

1단계: Amazon S3 버킷 생성

아직 생성하지 않은 경우 Amazon RDS에서 RDS for Db2 데이터베이스의 감사 로그 파일을 업로드할 Amazon S3 버킷을 생성합니다. 감사 파일의 대상으로 사용하는 S3 버킷에는 다음 제한이 적용됩니다.

  • RDS for Db2 DB 인스턴스와 동일한 AWS 리전에 있어야 합니다.

  • 대중에게 공개되어서는 안 됩니다.

  • TDE는 S3 객체 잠금을 사용할 수 없습니다.

  • 버킷 소유자는 IAM 역할 소유자여야 합니다.

Amazon S3 버킷을 생성하는 방법을 알아보려면 Amazon S3 사용 설명서에서 버킷 생성을 참조하세요.

감사 로깅을 활성화하면 Amazon RDS가 자동으로 DB 인스턴스의 로그를 다음 위치로 전송합니다.

  • DB 인스턴스 수준 로그 – bucket_name/db2-audit-logs/dbi_resource_id/date_time_utc/

  • 데이터베이스 수준 로그 – bucket_name/db2-audit-logs/dbi_resource_id/date_time_utc/db_name/

버킷에 대한 Amazon 리소스 이름(ARN)을 기록합니다. 이 정보는 후속 단계를 완료하는 데 필요합니다.

2단계: IAM 정책 생성

감사 로그 파일을 DB 인스턴스에서 Amazon S3 버킷으로 전송하는 데 필요한 권한을 가진 IAM 정책을 생성합니다. 이 단계에서는 S3 버킷이 있다고 가정합니다.

정책을 생성하기 전에 다음 정보를 수집합니다.

  • 버킷의 ARN.

  • 버킷이 SSE-KMS 암호화를 사용하는 경우 AWS Key Management Service(AWS KMS) 키의 ARN.

다음 권한을 포함하는 IAM 정책을 생성합니다.

"s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload", "s3:ListAllMyBuckets"
참고

Amazon RDS는 동일한 AWS 계정가 S3 버킷과 RDS for Db2 DB 인스턴스를 모두 소유하고 있는지 확인하기 위해 내부적으로 s3:ListAllMyBuckets 작업이 필요합니다.

버킷이 SSE-KMS 암호화를 사용하는 경우 다음 권한도 포함하세요.

"kms:GenerateDataKey", "kms:Decrypt"

AWS Management Console 또는 AWS Command Line Interface(AWS CLI)를 사용하여 IAM 정책을 생성할 수 있습니다.

Amazon S3 버킷에 Amazon RDS 액세스를 허용하는 IAM 정책을 생성하려면
  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 정책을 선택합니다.

  3. 정책 생성을 선택한 다음 JSON을 선택합니다.

  4. 작업 추가에서 S3를 기준으로 필터링합니다. ListBucket, GetBucketAcl, GetBucketLocation 액세스를 추가합니다.

  5. 리소스 추가에서 추가를 선택합니다. 리소스 유형에서 버킷을 선택하고 버킷 이름을 입력합니다. 그런 다음 리소스 추가를 선택합니다.

  6. 새 문 추가를 선택합니다.

  7. 작업 추가에서 S3를 기준으로 필터링합니다. PutObject, ListMultipartUploadParts, AbortMultipartUpload 액세스를 추가합니다.

  8. 리소스 추가에서 추가를 선택합니다. 리소스 유형에서 개체를 선택하고 버킷 이름/*을 입력합니다. 그런 다음 리소스 추가를 선택합니다.

  9. 새 문 추가를 선택합니다.

  10. 작업 추가에서 S3를 기준으로 필터링합니다. ListAllMyBuckets 액세스를 추가합니다.

  11. 리소스 추가에서 추가를 선택합니다. 리소스 유형에서 모든 리소스를 선택합니다. 그런 다음 리소스 추가를 선택합니다.

  12. 자체 KMS 키를 사용하여 데이터를 암호화하는 경우 다음 단계를 따릅니다.

    1. 새 문 추가를 선택합니다.

    2. 작업 추가에서 KMS별로 필터링합니다. GenerateDataKeyDecrypt 액세스를 추가합니다.

    3. 리소스 추가에서 추가를 선택합니다. 리소스 유형에서 모든 리소스를 선택합니다. 그런 다음 리소스 추가를 선택합니다.

  13. Next(다음)를 선택합니다.

  14. 정책 이름에 이 정책의 이름을 입력합니다.

  15. (선택 사항) 설명에 이 정책에 대한 설명을 입력합니다.

  16. 정책 생성을 선택합니다.

Amazon S3 버킷에 Amazon RDS 액세스를 허용하는 IAM 정책을 생성하려면
  1. create-policy 명령을 실행합니다. 다음 예제에서는 iam_policy_nameamzn-s3-demo-bucket을 IAM 정책의 이름과 대상 Amazon S3 버킷의 이름으로 바꿉니다.

    대상 LinuxmacOS, 또는Unix:

    aws iam create-policy \ --policy-name iam_policy_name \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] }, { "Sid": "Statement2", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Sid": "Statement3", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets" ], "Resource": [ "*" ] }, { "Sid": "Statement4", "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "*" ] } ] }'

    Windows의 경우:

    aws iam create-policy ^ --policy-name iam_policy_name ^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] }, { "Sid": "Statement2", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Sid": "Statement3", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets" ], "Resource": [ "*" ] }, { "Sid": "Statement4", "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "*" ] } ] }'
  2. 정책이 생성되면 정책의 ARN을 기록해 둡니다. 3단계: IAM 역할 생성 및 IAM 정책 연결에 대한 ARN이 필요합니다.

IAM 정책 생성에 대한 자세한 내용은 IAM 사용 설명서의 IAM 정책 생성을 참조하세요.

3단계: IAM 역할 생성 및 IAM 정책 연결

이 단계에서는 2단계: IAM 정책 생성에서 IAM 정책을 생성했다고 가정합니다. 이 단계에서는 RDS for Db2 DB 인스턴스에 대한 IAM 역할을 만든 다음 역할에 IAM 정책을 연결합니다.

콘솔 또는 AWS CLI를 사용하여 DB 인스턴스에 대한 IAM 역할을 만들 수 있습니다.

IAM 역할을 생성하여 여기에 IAM 정책을 연결하려면
  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 역할을 선택합니다.

  3. 역할 생성을 선택합니다.

  4. 신뢰할 수 있는 엔터티 유형AWS 서비스를 선택합니다.

  5. 서비스 또는 사용 사례의 경우 RDS를 선택한 다음 RDS – 데이터베이스에 역할 추가를 선택합니다.

  6. Next(다음)를 선택합니다.

  7. 권한 정책의 경우 생성한 IAM 정책의 이름을 검색하여 선택합니다.

  8. Next(다음)를 선택합니다.

  9. 역할 이름(Role name)에 역할 이름을 입력합니다.

  10. (선택 사항)설명에 새 역할에 대한 설명을 입력합니다.

  11. 역할 생성을 선택합니다.

IAM 역할을 생성하여 여기에 IAM 정책을 연결하려면
  1. create-role 명령을 실행합니다. 다음 예제에서 iam_role_name을 IAM 역할 이름으로 바꿉니다.

    대상 LinuxmacOS, 또는Unix:

    aws iam create-role \ --role-name iam_role_name \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'

    Windows의 경우:

    aws iam create-role ^ --role-name iam_role_name ^ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'
  2. 역할이 생성되면 역할의 ARN을 기록합니다. 다음 4단계: Db2 감사 로깅을 위한 옵션 그룹 구성 단계에서 이 ARN을 사용합니다.

  3. attach-role-policy 명령을 실행합니다. 다음 예제에서 iam_policy_arn2단계: IAM 정책 생성에서 생성한 IAM 정책의 ARN으로 대체합니다. iam_role_name을 방금 생성한 IAM 역할 이름으로 바꿉니다.

    대상 LinuxmacOS, 또는Unix:

    aws iam attach-role-policy \ --policy-arn iam_policy_arn \ --role-name iam_role_name

    Windows의 경우:

    aws iam attach-role-policy ^ --policy-arn iam_policy_arn ^ --role-name iam_role_name

자세한 내용은 IAM 사용 설명서IAM 사용자에게 권한을 위임하기 위한 역할 생성을 참조하십시오.

4단계: Db2 감사 로깅을 위한 옵션 그룹 구성

RDS for Db2 DB 인스턴스에 Db2 감사 로깅 옵션을 추가하는 프로세스는 다음과 같습니다.

  1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 복사 또는 수정합니다.

  2. 필요한 모든 옵션을 추가하고 구성하십시오.

  3. 옵션 그룹을 DB 인스턴스에 연결합니다.

Db2 감사 로깅 옵션을 추가한 후 DB 인스턴스를 재시작할 필요가 없습니다. 옵션 그룹이 활성화되면 S3 버킷에 감사를 생성하고 감사 로그를 저장할 수 있습니다.

DB 인스턴스의 옵션 그룹에 Db2 감사 로깅을 추가 및 구성하려면
  1. 다음 중 하나를 선택합니다.

    • 기존 옵션 그룹을 사용합니다.

    • 사용자 지정 DB 옵션 그룹을 생성하고 해당 옵션 그룹을 사용합니다. 자세한 내용은 옵션 그룹 생성 단원을 참조하십시오.

  2. 옵션 그룹에 DB2_AUDIT 옵션을 추가하고 옵션 설정을 구성합니다. 옵션 추가에 대한 자세한 내용은 옵션 그룹에 옵션 추가 섹션을 참조하세요.

    • IAM_ROLE_ARN의 경우 3단계: IAM 역할 생성 및 IAM 정책 연결에서 생성한 IAM 역할의 ARN을 입력합니다.

    • S3_BUCKET_ARN의 경우 Db2 감사 로그에 사용할 S3 버킷의 ARN을 입력합니다. 버킷은 RDS for Db2 DB 인스턴스와 동일한 리전에 있어야 합니다. 입력한 IAM 역할과 관련된 정책은 이 리소스에 필요한 작업을 허용해야 합니다.

  3. 옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스에 적용합니다. 다음 중 하나를 선택합니다.

    • 새 DB 인스턴스를 생성하는 경우, 인스턴스를 시작할 때 옵션 그룹을 적용하십시오.

    • 기존 DB 인스턴스의 경우, 해당 인스턴스를 수정한 후 새 옵션 그룹을 연결하여 옵션 그룹을 적용하십시오. 자세한 내용은 Amazon RDS DB 인스턴스 수정 단원을 참조하십시오.

5단계: 감사 정책 구성

RDS for Db2 데이터베이스에 대한 감사 정책을 구성하려면 RDS for Db2 DB 인스턴스에 대한 마스터 사용자 이름 및 마스터 암호를 사용하여 rdsadmin 데이터베이스에 연결합니다. 그런 다음 데이터베이스의 DB 이름과 해당 파라미터 값을 사용하여 rdsadmin.configure_db_audit 저장 프로시저를 호출합니다.

다음 예제에서는 데이터베이스에 연결하여 AUDIT, CHECKING, OBJMAINT, SECMAINT, SYSADMIN, VALIDATE 카테고리를 통해 testdb에 대한 감사 정책을 구성합니다. BOTH 상태 값은 성공과 실패를 모두 로깅하며, ERROR TYPE은 기본적으로 NORMAL입니다. 이 저장 프로시저를 사용하는 방법에 대한 자세한 내용은 rdsadmin.configure_db_audit 섹션을 참조하세요.

db2 "connect to rdsadmin user master_user using master_password" db2 "call rdsadmin.configure_db_audit('testdb', 'ALL', 'BOTH', ?)"

6단계: 감사 구성 확인

감사 정책이 올바르게 설정되었는지 확인하려면 감사 구성 상태를 확인합니다.

구성을 확인하려면 RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 rdsadmin 데이터베이스에 연결합니다. 그런 다음 데이터베이스의 DB 이름을 사용하여 다음 SQL 문을 실행합니다. 다음 예제에서 DB 이름은 testdb입니다.

db2 "select task_id, task_type, database_name, lifecycle, varchar(bson_to_json(task_input_params), 500) as task_params, cast(task_output as varchar(500)) as task_output from table(rdsadmin.get_task_status(null,'testdb','CONFIGURE_DB_AUDIT'))" Sample Output TASK_ID TASK_TYPE DATABASE_NAME LIFECYCLE -------------------- -------------------- --------------- ------------- 2 CONFIGURE_DB_AUDIT DB2DB SUCCESS ... continued ... TASK_PARAMS -------------------------------------------------------- { "AUDIT_CATEGORY" : "ALL", "CATEGORY_SETTING" : "BOTH" } ... continued ... TASK_OUTPUT --------------------------------------------------- 2023-12-22T20:27:03.029Z Task execution has started. 2023-12-22T20:27:04.285Z Task execution has completed successfully.

Db2 감사 로깅 관리

Db2 감사 로깅을 설정한 후 특정 데이터베이스의 감사 정책을 수정하거나 데이터베이스 수준 또는 전체 DB 인스턴스에서 감사 로깅을 비활성화할 수 있습니다. 로그 파일이 업로드되는 Amazon S3 버킷을 변경할 수도 있습니다.

Db2 감사 정책 수정

특정 RDS for Db2 데이터베이스의 감사 정책을 수정하려면 rdsadmin.configure_db_audit 저장 프로시저를 실행합니다. 이 저장 프로시저를 사용하여 감사 정책의 카테고리, 카테고리 설정 및 오류 유형 구성을 변경할 수 있습니다. 자세한 내용은 rdsadmin.configure_db_audit 단원을 참조하십시오.

로그 파일 위치 수정

로그 파일이 업로드되는 Amazon S3 버킷을 변경하려면 다음 중 하나를 수행합니다.

  • RDS for Db2 DB 인스턴스에 연결된 현재 옵션 그룹 수정 – DB2_AUDIT 옵션이 새 버킷을 가리키도록 S3_BUCKET_ARN 설정을 업데이트합니다. 또한 연결된 옵션 그룹의 IAM_ROLE_ARN 설정으로 지정된 IAM 역할에 연결된 IAM 정책을 업데이트해야 합니다. 이 IAM 정책은 새 버킷에 필요한 액세스 권한을 제공해야 합니다. IAM 정책에 필요한 권한에 대한 자세한 내용은 IAM 정책 생성 섹션을 참조하세요.

  • RDS for Db2 DB 인스턴스를 다른 옵션 그룹에 연결 - DB 인스턴스를 수정하여 연결된 옵션 그룹을 변경합니다. 새 옵션 그룹이 올바른 S3_BUCKET_ARNIAM_ROLE_ARN 설정으로 구성되었는지 확인합니다. DB2_AUDIT 옵션에 대해 이러한 설정을 구성하는 방법에 대한 자세한 내용은 옵션 그룹 구성 섹션을 참조하세요.

옵션 그룹을 수정하는 경우 변경 사항을 즉시 적용해야 합니다. 자세한 내용은 Amazon RDS DB 인스턴스 수정 단원을 참조하십시오.

Db2 감사 로깅 비활성화

Db2 감사 로깅을 비활성화하려면 다음 중 하나를 수행합니다.

  • RDS for Db2 DB 인스턴스에 대한 감사 로깅 비활성화 - DB 인스턴스를 수정하고 DB2_AUDIT 옵션이 포함된 옵션 그룹을 제거합니다. 자세한 내용은 Amazon RDS DB 인스턴스 수정 단원을 참조하십시오.

  • 특정 데이터베이스에 대한 감사 로깅 비활성화 - 데이터베이스의 DB 이름으로 rdsadmin.disable_db_audit를 호출하여 감사 로깅을 중지하고 감사 정책을 제거합니다. 자세한 내용은 rdsadmin.disable_db_audit 단원을 참조하십시오.

    db2 "call rdsadmin.disable_db_audit( 'db_name')"

감사 로그 보기

Db2 감사 로깅을 활성화한 후 Amazon S3 버킷의 감사 데이터를 보기 전에 1시간 이상 기다립니다. Amazon RDS는 RDS for Db2 DB 인스턴스의 로그를 다음 위치로 자동 전송합니다.

  • DB 인스턴스 수준 로그 – bucket_name/db2-audit-logs/dbi_resource_id/date_time_utc/

  • 데이터베이스 수준 로그 – bucket_name/db2-audit-logs/dbi_resource_id/date_time_utc/db_name/

Amazon S3 콘솔의 다음 예제 스크린샷은 RDS for Db2 DB 인스턴스 수준 로그 파일의 폴더 목록을 보여줍니다.

객체 탭이 선택된 Amazon S3 콘솔에 RDS for Db2 DB 인스턴스 수준 로그 파일의 폴더 목록이 표시되어 있습니다.

Amazon S3 콘솔의 다음 예제 스크린샷은 RDS for Db2 DB 인스턴스의 데이터베이스 수준 로그 파일을 보여줍니다.

객체 탭이 선택된 Amazon S3 콘솔에는 RDS for Db2 DB 인스턴스의 데이터베이스 수준 로그 파일이 표시되어 있습니다.

Db2 감사 로깅의 문제 해결

다음 정보를 사용하여 Db2 감사 로깅과 관련된 일반적인 문제를 해결합니다.

감사 정책을 구성할 수 없음

저장 프로시저 rdsadmin.configure_db_audit을 호출하면 오류가 반환되는 경우 DB2_AUDIT 옵션이 있는 옵션 그룹이 RDS for Db2 DB 인스턴스와 연결되어 있지 않을 수 있습니다. DB 인스턴스를 수정하여 옵션 그룹을 추가한 다음 저장 프로시저를 다시 호출하세요. 자세한 내용은 Amazon RDS DB 인스턴스 수정 단원을 참조하십시오.

Amazon S3 버킷에 데이터 없음

Amazon S3 버킷에서 로깅 데이터가 누락된 경우 다음을 확인합니다.

  • Amazon S3 버킷은 RDS for Db2 DB 인스턴스와 동일한 리전에 있습니다.

  • IAM_ROLE_ARN 옵션 설정에서 지정한 역할은 Amazon S3 버킷에 로그를 업로드하는 데 필요한 권한으로 구성됩니다. 자세한 내용은 IAM 정책 생성 단원을 참조하십시오.

  • IAM_ROLE_ARNS3_BUCKET_ARN 옵션 설정의 ARN은 RDS for Db2 DB 인스턴스와 연결된 옵션 그룹에서 올바르게 표시됩니다. 자세한 내용은 옵션 그룹 구성 단원을 참조하십시오.

데이터베이스에 연결하고 SQL 문을 실행하여 감사 로깅 구성의 작업 상태를 확인할 수 있습니다. 자세한 내용은 감사 구성 확인 단원을 참조하십시오.

또한 이벤트를 확인하여 로그가 누락될 수 있는 이유에 대해 자세히 알아볼 수 있습니다. 이벤트를 보는 방법에 대한 자세한 내용은 Amazon RDS 콘솔에서 로그, 이벤트 및 스트림 보기 섹션을 참조하세요.