AWS S3에서 비밀 스캔하기

AWS S3에서 비밀 스캔하기

HCP Vault Radar를 사용하면 애플리케이션 데이터, 구성 파일, 백업 및 기타 민감한 정보에 대해 AWS S3 버킷을 스캔할 수 있어요. 아직 베타(beta) 단계 기능이에요.

출처: 문서

본문

베타 기능: 이 기능은 현재 베타 릴리스로 제공돼요. 베타 기능은 안정적이지만 불완전할 수 있고 변경될 수 있어요. 프로덕션 워크플로우에서 베타 기능을 사용하는 것은 강력히 권장하지 않아요.

HCP Vault Radar를 사용하면 애플리케이션 데이터, 구성 파일, 백업 및 기타 민감한 정보에 대해 AWS S3 버킷을 스캔할 수 있어요.

Vault Radar는 버전이 지정된(versioned) 버킷을 지원해 객체의 이전 버전도 스캔할 수 있어요.

HCP Vault Radar가 처음이라면 HCP Vault Radar 빠른 시작(quickstart) 튜토리얼 시리즈를 확인해 보세요.

사전 요구사항(Prerequisites)

다음 AWS 인증 방법 중 하나가 필요해요:

  • HCP Vault Radar agent 버전 0.38.0 이상
  • EC2 인스턴스 또는 구성된 IAM 역할을 사용한 IAM 역할 인증
  • AWS Access Key ID와 Secret Access Key를 사용한 환경 변수 인증

경고: HCP Vault Radar는 환경 변수를 통한 단기(short lived) AWS 자격 증명(AWS_SESSION_TOKEN)을 지원하지 않아요.

두 인증 방법 모두 계정 간 접근 또는 상승된 권한을 위한 선택적 assume role ARN을 지원해요. 역할 가정에 대한 자세한 내용은 AWS STS AssumeRole 문서를 참조해 주세요.

필수 권한(Required permissions)

IAM 사용자, 역할 또는 가정된 역할은 다음 권한을 가져야 해요:

서비스 권한 문서
STS sts:GetCallerIdentity GetCallerIdentity API
S3 s3:ListAllMyBuckets ListBuckets API
S3 s3:ListBucket ListObjectsV2 API
S3 s3:GetObject GetObject API
Account (선택) account:GetAccountInformation GetAccountInformation API
S3 s3:GetObjectVersion GetObject API
S3 s3:ListBucketVersions ListObjectVersions API
S3 (선택) s3:GetBucketPolicyStatus GetBucketPolicyStatus API
S3 (선택) s3:GetBucketPublicAccessBlock GetPublicAccessBlock API
S3 (선택) s3:GetBucketAcl GetBucketAcl API
S3 (선택) s3:GetObjectAcl GetObjectAcl API

선택적 권한 제한 사항

  • account:GetAccountInformation: 이 권한 없이 스캔하면 데이터 소스 메타데이터의 UI에 AWS 계정 이름이 포함되지 않아요.
  • s3:GetBucketPolicyStatus, s3:GetBucketAcl, s3:GetBucketPublicAccessBlock 및 s3:GetObjectAcl: 이 선택적 권한 없이 스캔하면 버킷 또는 감지된 비밀의 가시성(visibility) 값이 포함되지 않아요.

예시 IAM 정책:

AWS를 사용하면 IAM 정책을 높은 수준뿐 아니라 매우 세분화된 수준에서도 정의할 수 있어요. (모든 버킷 스캔 허용 / 선택된 버킷만 스캔 허용 탭)

모든 버킷 스캔 허용:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sts:GetCallerIdentity"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "s3:ListBucketVersions",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketAcl",
                "s3:GetBucketPublicAccessBlock"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:GetObjectAcl"
            ],
            "Resource": "arn:aws:s3:::*/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "account:GetAccountInformation"
            ],
            "Resource": "*"
        }
    ]
}

선택된 버킷만 스캔 허용:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sts:GetCallerIdentity",
                "account:GetAccountInformation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": [
                "arn:aws:s3:::*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:ListBucketVersions",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketAcl",
                "s3:GetBucketPublicAccessBlock"
            ],
            "Resource": [
                "arn:aws:s3:::my-app-logs",
                "arn:aws:s3:::my-app-data",
                "arn:aws:s3:::my-app-backups"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:GetObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::my-app-logs/*",
                "arn:aws:s3:::my-app-data/*",
                "arn:aws:s3:::my-app-backups/*"
            ]
        }
    ]
}

AWS S3 데이터 소스 추가하기

HCP 포털의 Vault Radar 모듈에서 AWS S3 agent 스캔을 설정하고 관리해요.

  1. Settings를 클릭해요.
  2. Data Sources를 클릭해요.
  3. Vault Radar Agent Scan을 선택해요.
  4. Object Storage 섹션에서 AWS S3를 선택해요.
  5. Authentication method 풀다운 메뉴에서 AWS 인증 방법을 선택해요.
  6. 선택한 방법에 대한 세부 정보를 입력해요. (IAM Role / Environment Variables 탭)
    • 인스턴스 프로필 또는 역할 기반 인증을 사용하려면 IAM Role을 선택해요.
    • 접근을 위해 다른 역할을 가정해야 한다면 Assume Role ARN 텍스트 필드에 (선택) assume role ARN을 입력해요.
    • 액세스 키를 사용하려면 environment variables에서 AWS Credentials를 선택해요.
    • AWS Access Key ID Env variable 텍스트 필드에 AWS Access Key ID 위치를 입력해요 (기본값: env://AWS_ACCESS_KEY_ID).
    • AWS Secret Access Key Env variable 텍스트 필드에 AWS Secret Access Key 위치를 입력해요 (기본값: env://AWS_SECRET_ACCESS_KEY).
    • 접근을 위해 다른 역할을 가정해야 한다면 Assume Role ARN 텍스트 필드에 (선택) assume role ARN을 입력해요.
  7. 연결을 검증하고 설정하려면 Next를 클릭해요.
  8. 모니터링할 버킷을 선택해요. 모든 버킷 또는 개별 버킷을 선택할 수 있어요.

    메모: Vault Radar는 여기 목록에서 선택했더라도 s3:GetObject 정책이 부여되지 않은 버킷은 건너뛰어요.

  9. Finish를 클릭해요.
  10. Vault Radar가 선택된 버킷의 모든 객체를 스캔하고 결과를 보고해요.

리소스에 그룹 할당하기

데이터 소스를 추가한 후에는 admin 역할을 가진 HCP 사용자가 각 데이터 소스 내의 모니터링되는 각 리소스에 그룹을 할당해야 해요. 각 리소스는 하나의 그룹에만 할당할 수 있어요.

메모: HCP IAM admin 역할을 가진 사용자는 다른 그룹의 구성원일 필요가 없어요. admin 역할의 계정은 Vault Radar에 대한 전체 접근 권한을 가져요.

아직 그룹이 없다면 Identity and Access Management groups 문서를 참조해 그룹을 만들어 주세요.

  1. Project 대시보드로 이동해요.
  2. Access control (IAM)을 클릭해요.
  3. Add new assignment를 클릭해요.
  4. Search for an assignee 검색 필드에서 그룹 이름을 검색해요.
  5. 검색 결과에서 그룹 이름을 클릭해요.
  6. Select service 풀다운 메뉴를 클릭하고 Vault Radar를 선택해요.
  7. Select role 풀다운 메뉴를 클릭하고 Vault Radar Developer 역할을 선택해요.
  8. Save를 클릭해요.
  9. Back to Dashboard를 클릭해요.
  10. Vault Radar를 클릭해요.
  11. Resources를 클릭해요.
  12. 그룹에 할당할 리소스를 선택하고 Assign groups를 클릭해요.
  13. Assign resource to group 풀다운 메뉴를 클릭해요.
  14. 리소스에 접근이 필요한 그룹을 선택해요.
  15. Viewer 또는 Contributor 역할 중 하나를 선택해요.
  16. OK를 클릭해요.

데이터 소스 호스트 업데이트하기

  1. Settings로 이동한 다음 Data Source Hosts로 이동해 오른쪽의 점 세 개를 클릭해요.
  2. 모니터링되는 데이터 소스를 업데이트하려면 Edit data sources를 클릭해요.
  3. 토큰을 업데이트하려면 Edit data source host details를 클릭해요.

튜토리얼(Tutorials)

HCP Vault Radar가 처음이라면 HCP Vault Radar 빠른 시작(quickstart) 튜토리얼 시리즈를 확인해 보세요.

더 알아보기 (Learn more)