Db2 감사 로깅

Db2 감사 로깅

이 문서는 Amazon RDS 사용자 가이드의 Db2 관련 페이지를 한국어로 설명합니다.

출처: 문서

본문

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

Topics
  • Db2 감사 로깅 설정
  • Db2 감사 로깅 관리
  • 감사 로그 보기
  • Db2 감사 로깅 문제 해결

Db2 감사 로깅 설정

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

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

Topics
  • Step 1: Amazon S3 버킷 생성
  • Step 2: IAM 정책 생성
  • Step 3: IAM 역할 생성 및 IAM 정책 연결
  • Step 4: Db2 감사 로깅용 옵션 그룹 구성
  • Step 5: 감사 정책 구성
  • Step 6: 감사 구성 확인

Step 1: Amazon S3 버킷 생성

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

  • RDS for Db2 DB 인스턴스와 동일한 AWS 리전에 있어야 합니다.
  • 공개적으로 열려 있으면 안 됩니다.
  • 버킷 소유자가 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 Resource Name(ARN)을 기록해 두세요. 이후 단계를 완료하는 데 이 정보가 필요합니다.

Step 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는 S3 버킷과 RDS for Db2 DB 인스턴스가 동일한 AWS 계정이 소유하고 있는지 내부적으로 확인하기 위해 s3:ListAllMyBuckets 작업이 필요합니다.

버킷이 SSE-KMS 암호화를 사용하는 경우 IAM 역할과 AWS KMS 키에 대해 다음 권한도 포함하세요.

IAM 역할에 대한 정책에 다음 권한을 포함하세요.

"kms:GenerateDataKey",
 "kms:Decrypt"

AWS KMS 키의 키 정책에 다음 권한을 포함하세요. 111122223333을 계정 번호로, AROA123456789EXAMPLE을 IAM 역할 이름으로 바꾸세요.

{
  "Sid": "Allow RDS role to use the key",
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:sts::111122223333:assumed-role/AROA123456789EXAMPLE/RDS-Db2Audit",
      "arn:aws:iam::111122223333:role/AROA123456789EXAMPLE"
    ]
  },
  "Action": [
    "kms:GenerateDataKey",
    "kms:Decrypt"
  ],
  "Resource": "*"
}

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

Amazon RDS가 Amazon S3 버킷에 액세스할 수 있도록 IAM 정책을 생성하려면
  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.
  2. 탐색 창에서 Policies를 선택합니다.
  3. Create policy를 선택한 다음 JSON을 선택합니다.
  4. Add actions에서 S3로 필터링합니다. ListBucket, GetBucketAcl, GetBucketLocation 액세스를 추가합니다.
  5. Add a resource에서 Add를 선택합니다. Resource type에서 bucket을 선택하고 버킷 이름을 입력한 다음 Add resource를 선택합니다.
  6. Add new statement를 선택합니다.
  7. Add actions에서 S3로 필터링합니다. PutObject, ListMultipartUploadParts, AbortMultipartUpload 액세스를 추가합니다.
  8. Add a resource에서 Add를 선택합니다. Resource type에서 object를 선택하고 bucket name/*을 입력한 다음 Add resource를 선택합니다.
  9. Add new statement를 선택합니다.
  10. Add actions에서 S3로 필터링합니다. ListAllMyBuckets 액세스를 추가합니다.
  11. Add a resource에서 Add를 선택합니다. Resource type에서 All Resources를 선택한 다음 Add resource를 선택합니다.
  12. 자체 KMS 키를 사용하여 데이터를 암호화하는 경우:
    • Add new statement를 선택합니다.
    • Add actions에서 KMS로 필터링합니다. GenerateDataKey 및 Decrypt 액세스를 추가합니다.
    • Add a resource에서 Add를 선택합니다. Resource type에서 All Resources를 선택한 다음 Add resource를 선택합니다.
  13. Next를 선택합니다.
  14. Policy name에 이 정책의 이름을 입력합니다.
  15. (선택 사항) Description에 이 정책에 대한 설명을 입력합니다.
  16. Create policy를 선택합니다.
Amazon RDS가 Amazon S3 버킷에 액세스할 수 있도록 IAM 정책을 생성하려면

create-policy 명령을 실행합니다. 다음 예제에서 iam_policy_name과 amzn-s3-demo-bucket을 IAM 정책의 이름과 대상 Amazon S3 버킷의 이름으로 바꾸세요.

Linux, macOS 또는 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": [
                    "*"
                ]
            }
        ]
  }'

정책이 생성된 후 정책의 ARN을 기록해 두세요. ARN은 Step 3( IAM 역할 생성 및 IAM 정책 연결)에 필요합니다.

IAM 정책 생성에 대한 정보는 IAM 사용자 가이드의 IAM 정책 생성을 참조하세요.

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

이 단계에서는 Step 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. 탐색 창에서 Roles를 선택합니다.
  3. Create role을 선택합니다.
  4. Trusted entity type에서 AWS service를 선택합니다.
  5. Service or use case에서 RDS를 선택한 다음 RDS – Add Role to Database를 선택합니다.
  6. Next를 선택합니다.
  7. Permissions policies에서 생성한 IAM 정책의 이름을 검색하여 선택합니다.
  8. Next를 선택합니다.
  9. Role name에 역할 이름을 입력합니다.
  10. (선택 사항) Description에 새 역할에 대한 설명을 입력합니다.
  11. Create role을 선택합니다.
IAM 역할을 생성하고 IAM 정책을 연결하려면

create-role 명령을 실행합니다. 다음 예제에서 iam_role_name을 IAM 역할의 이름으로 바꾸세요.

Linux, macOS 또는 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"
        }
      ]
    }'

역할이 생성된 후 이 역할의 ARN을 기록해 두세요. 이 ARN은 다음 단계인 Step 4( Db2 감사 로깅용 옵션 그룹 구성)에 필요합니다.

attach-role-policy 명령을 실행합니다. 다음 예제에서 iam_policy_arn을 Step 2( IAM 정책 생성)에서 생성한 IAM 정책의 ARN으로, iam_role_name을 방금 생성한 IAM 역할의 이름으로 바꾸세요.

Linux, macOS 또는 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 사용자에게 권한을 위임하는 역할 생성을 참조하세요.

Step 4: Db2 감사 로깅용 옵션 그룹 구성

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

  1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 복사 또는 수정합니다.
  2. 필요한 모든 옵션을 추가하고 구성합니다.
  3. 옵션 그룹을 DB 인스턴스와 연결합니다.

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

DB 인스턴스의 옵션 그룹에 Db2 감사 로깅을 추가하고 구성하려면
  1. 다음 중 하나를 선택합니다.
    • 기존 옵션 그룹을 사용합니다.
    • 사용자 지정 DB 옵션 그룹을 생성하고 해당 옵션 그룹을 사용합니다. 자세한 내용은 옵션 그룹 생성을 참조하세요.
  2. 옵션 그룹에 DB2_AUDIT 옵션을 추가하고 옵션 설정을 구성합니다. 옵션 추가에 대한 자세한 내용은 옵션 그룹에 옵션 추가하기를 참조하세요.
    • IAM_ROLE_ARN에 Step 3( IAM 역할 생성 및 IAM 정책 연결)에서 생성한 IAM 역할의 ARN을 입력합니다.
    • S3_BUCKET_ARN에 Db2 감사 로그에 사용할 S3 버킷의 ARN을 입력합니다. 버킷은 RDS for Db2 DB 인스턴스와 동일한 리전에 있어야 합니다. 입력한 IAM 역할에 연결된 정책이 이 리소스에 필요한 작업을 허용해야 합니다.
  3. 옵션 그룹을 새 DB 인스턴스나 기존 DB 인스턴스에 적용합니다. 다음 중 하나를 선택합니다.
    • 새 DB 인스턴스를 생성하는 경우 인스턴스를 시작할 때 옵션 그룹을 적용합니다.
    • 기존 DB 인스턴스의 경우 인스턴스를 수정한 다음 새 옵션 그룹을 연결하여 옵션 그룹을 적용합니다. 자세한 내용은 Amazon RDS DB 인스턴스 수정하기를 참조하세요.

Step 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', ?)"

Step 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 버킷을 변경할 수도 있습니다.

Topics
  • Db2 감사 정책 수정
  • 로그 파일 위치 수정
  • Db2 감사 로깅 비활성화

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_ARN 및 IAM_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/

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

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

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_ARN 및 S3_BUCKET_ARN 옵션 설정의 ARN이 RDS for Db2 DB 인스턴스와 연결된 옵션 그룹에서 올바른지 확인합니다. 자세한 내용은 옵션 그룹 구성을 참조하세요.

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

이벤트를 확인하여 로그가 누락된 이유를 더 자세히 알아볼 수도 있습니다. 이벤트 보기 방법에 대한 정보는 Amazon RDS 콘솔에서 로그, 이벤트 및 스트림 보기를 참조하세요.

더 알아보기 (Learn more)