요청하신 구성(SageMaker, S3, KMS, CloudWatch, EC2, RDS)을 연동하고 활용하기 위한 AWS IAM 역할, KMS 키 정책, EC2 User-Data, 그리고 기본 DB 쿼리문을 정리해 드립니다.

서비스 간의 원활한 통신과 보안을 고려하여 최소 권한 원칙(Least Privilege)에 기반한 템플릿으로 작성했습니다. 환경에 맞게 ARN(Amazon Resource Name) 등 일부 값을 수정하여 사용하시면 됩니다.


1. IAM Role (EC2 및 SageMaker용 통합 권한)

이 역할은 EC2(또는 SageMaker) 인스턴스에 부여하여 S3, KMS, CloudWatch, RDS에 접근할 수 있도록 합니다.

신뢰 정책 (Trust Policy)

어떤 서비스가 이 역할을 맡을 수 있는지 정의합니다.

JSON

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "ec2.amazonaws.com",
          "sagemaker.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

권한 정책 (Permission Policy)

JSON

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "S3Access",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::YOUR_BUCKET_NAME",
        "arn:aws:s3:::YOUR_BUCKET_NAME/*"
      ]
    },
    {
      "Sid": "KMSAccess",
      "Effect": "Allow",
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
      ],
      "Resource": [
        "arn:aws:kms:REGION:ACCOUNT_ID:key/YOUR_RDS_KMS_KEY_ID",
        "arn:aws:kms:REGION:ACCOUNT_ID:key/YOUR_CW_KMS_KEY_ID"
      ]
    },
    {
      "Sid": "CloudWatchAccess",
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams",
        "cloudwatch:PutMetricData"
      ],
      "Resource": "*"
    },
    {
      "Sid": "RDSAccess",
      "Effect": "Allow",
      "Action": [
        "rds:DescribeDBInstances",
        "rds:DescribeDBClusters",
        "rds-db:connect" 
      ],
      "Resource": "*"
    }
  ]
}

참고: rds-db:connect는 IAM 데이터베이스 인증을 사용할 때 필요합니다. 일반 비밀번호 인증을 사용한다면 제외해도 무방합니다.


2. KMS Key 정책

KMS 키를 생성할 때, 해당 서비스를 위해 키 사용 권한을 명시적으로 허용해야 합니다. (기본 관리자 권한 외에 추가해야 할 Statement입니다.)

2-1. RDS용 KMS 키 정책

RDS 서비스가 저장소 암호화/복호화를 위해 키를 사용할 수 있도록 허용합니다.