S3 Vectors의 데이터 보호 및 암호화

S3 Vectors의 데이터 보호 및 암호화 (Data protection and encryption in S3 Vectors)

Amazon S3 Vectors는 벡터 데이터에 대해 99.999999999%(11 nines)의 내구성을 제공해요. 이는 벡터 저장 요구사항에 탁월한 신뢰성을 보장해 줘요. 이 내구성은 하드웨어 장애나 기타 중단이 발생해도 데이터 무결성과 가용성을 유지하도록 설계된 Amazon S3의 검증된 인프라가 뒷받침해 줘요.

S3 Vectors의 데이터 보호는 저장 시(at rest)와 전송 중(in transit) 모두에서 벡터 데이터를 보호하도록 설계된 여러 계층의 보안 제어를 포함해요.

기본적으로 Amazon S3 Vectors 벡터 버킷의 모든 새 벡터는 Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)를 사용해요. SSE-S3 암호화로 벡터 버킷을 만들면 이후 버킷의 모든 작업은 자동으로 암호화를 사용해요.

S3 Vectors는 AWS Key Management Service(KMS)와도 통합되어 유연한 암호화 키 관리 옵션을 제공하며, 권한 제어와 감사 가능성을 위해 고객 관리형 키(customer-managed key)를 선택할 수 있어요.

벡터 버킷 안에서 벡터 인덱스를 만들 때 선택적으로 벡터 버킷 수준의 암호화 설정을 재정의하고 벡터 인덱스 수준에서 암호화 구성을 제공(SSE-S3 또는 KMS)할 수 있어요. 벡터 인덱스를 만들 때 특정 암호화를 지정하지 않으면 인덱스는 소속된 벡터 버킷의 암호화 구성을 상속해요.

출처: 문서

본문

Amazon S3 벡터 버킷 및 인덱스의 서버 측 암호화 동작 설정하기 (Setting server-side encryption behavior for Amazon S3 vector buckets and indexes)

S3 Vectors의 암호화 구성은 벡터 버킷을 만들 때 지정해야 하는 근본적인 보안 설정이에요. 이 설계는 버킷에 저장되는 모든 벡터 데이터가 생성 순간부터 암호화되도록 보장해요. 기본적으로 암호화 구성은 버킷 안의 모든 벡터, 벡터 인덱스, 메타데이터에 적용되어 벡터 버킷의 전체 벡터 데이터셋에 걸쳐 일관된 보호를 제공해요. 선택적으로 벡터 버킷 수준의 암호화 설정을 재정의하고 벡터 인덱스 수준에서 전용 암호화 구성(SSE-S3 또는 AWS KMS)을 제공할 수도 있어요.

중요: 벡터 버킷의 암호화 설정은 벡터 버킷을 만든 뒤에는 변경할 수 없어요. 읽기 전용 버킷 생성 과정에서 규정 준수(compliance) 요구사항, 키 관리 선호도, 기존 보안 인프라와의 통합을 포함해 암호화 요구사항을 신중히 고려해야 해요.

벡터 버킷 수준에서 SSE-S3 또는 SSE-KMS 암호화 타입을 설정하면 기본적으로 버킷 안의 모든 벡터 인덱스와 벡터에 적용돼요. 암호화 구성은 벡터 데이터 자체뿐 아니라 모든 관련 메타데이터에도 적용돼요.

또한 선택적으로 벡터 버킷 수준의 암호화 설정을 재정의하고 벡터 인덱스 수준에서 전용 암호화 구성(SSE-S3 또는 KMS)을 제공할 수 있어요. 벡터 인덱스의 암호화 설정은 벡터 인덱스를 만든 뒤에는 변경할 수 없어요.

SSE-S3 암호화 사용하기 (Using SSE-S3 encryption)

Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)는 AWS가 암호화 과정의 모든 측면을 관리하는 벡터 버킷에 대한 간단하고 효과적인 암호화 솔루션이에요. 이 암호화 방법은 AES-256 암호화를 사용하며, 운영 오버헤드를 최소화하면서 강력한 보안을 제공하고, 암호화 키를 관리할 필요 없이 강력한 암호화를 조직에 제공하도록 설계됐어요.

SSE-S3를 사용하면 Amazon S3가 암호화 키의 생성, 교체, 관리를 자동으로 처리해요. SSE-S3는 추가 구성이나 지속적인 관리 요구사항 없이 강력한 보안을 제공해요. 암호화와 복호화 과정은 서비스가 자동으로 처리하며, 표준 S3 Vectors 요금 외에 SSE-S3 암호화에 대한 추가 비용은 없어요.

SSE-KMS 암호화 사용하기 (Using SSE-KMS encryption)

AWS Key Management Service 키를 사용한 서버 측 암호화(SSE-KMS)는 암호화 키에 대한 강화된 제어를 제공하고 키 사용의 상세한 감사 로깅을 가능하게 해요. 이 암호화 방법은 엄격한 규정 준수 요구사항이 있는 조직, 커스텀 키 교체 정책을 구현해야 하는 조직, 또는 세부적인 데이터 접근 감사 추적이 필요한 환경에 이상적이에요.

SSE-KMS를 사용하면 고객 관리형 키(CMK)로 벡터 데이터를 암호화할 수 있어요. 고객 관리형 키는 최고 수준의 제어를 제공하며 키 정책 정의, 키 활성화·비활성화, AWS CloudTrail을 통한 키 사용 모니터링을 할 수 있게 해 줘요. 이 수준의 제어 덕분에 규제 산업이나 특정 데이터 거버넌스 요구사항이 있는 조직에 특히 적합해요.

고객 관리형 키와 함께 SSE-KMS를 사용하면 키를 사용해 데이터를 암호화·복호화할 수 있는 사람을 완전히 제어할 수 있어요. 어떤 사용자, 역할, 서비스가 키에 접근할 수 있는지 지정하는 상세한 키 정책을 만들 수 있어요.

SSE-KMS의 중요한 고려사항 (Important considerations for SSE-KMS)

  • KMS 키 형식 요구사항 (KMS key format requirements): S3 Vectors는 KMS 키를 전체 Amazon Resource Name(ARN) 형식으로 지정해야 해요. 키 ID나 키 별칭(alias)은 지원되지 않아요.
  • 서비스 보안 주체 권한 (Service principal permissions): S3 Vectors와 함께 고객 관리형 키를 사용할 때는 S3 Vectors 서비스 보안 주체가 KMS 키를 사용하도록 명시적으로 권한을 부여해야 해요. 이 요구사항은 서비스가 여러분을 대신해 데이터를 암호화·복호화할 수 있도록 보장해요. 접근이 필요한 서비스 보안 주체는 indexing.s3vectors.amazonaws.com이에요.

S3 Vectors용 KMS 키 정책 예시 (Example: KMS key policy for S3 Vectors)

S3 Vectors와 함께 고객 관리형 KMS 키를 사용하려면 키 정책을 업데이트해 S3 Vectors 서비스 보안 주체에 대한 권한을 포함해야 해요. 포괄적인 키 정책 예시는 다음과 같아요.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowS3VectorsServicePrincipal",
            "Effect": "Allow",
            "Principal": {
                "Service": "indexing.s3vectors.amazonaws.com"
            },
            "Action": "kms:Decrypt",
            "Resource": "*",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3vectors:aws-region:123456789012:bucket/*"
                },
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ForAnyValue:StringEquals": {
                    "kms:EncryptionContextKeys": ["aws:s3vectors:arn", "aws:s3vectors:resource-id"]
                }
            }
        },
        {
            "Sid": "AllowApplicationAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam:123456789012:role/VectorApplicationRole",
                    "arn:aws:iam:123456789012:user/DataScientist"
                ]
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "s3vectors.aws-region.amazonaws.com"
                },
                "ForAnyValue:StringEquals": {
                    "kms:EncryptionContextKeys": ["aws:s3vectors:arn", "aws:s3vectors:resource-id"]
                }
            }
        }
    ]
}

필요한 KMS 권한 (Required KMS permissions)

  • S3 Vectors 서비스 보안 주체 권한 (S3 Vectors service principal permission):
    • kms:Decrypt — S3 Vectors 서비스 보안 주체(indexing.s3vectors.amazonaws.com)가 백그라운드 작업에서 인덱스를 유지·최적화하기 위해 고객 관리형 키에 대해 필요해요.
  • IAM 보안 주체 권한 (IAM principal permissions):
    • kms:Decrypt — 모든 벡터 수준 작업(PutVectors, GetVectors, QueryVectors, DeleteVectors, ListVectors)에 필요해요.
    • kms:GenerateDataKey — 고객 관리형 키로 벡터 버킷을 만들 때 필요해요.

교차 계정 접근 고려사항 (Cross-account access considerations)

SSE-KMS로 교차 계정 접근 패턴을 구현할 때는 KMS 키 정책이 다른 계정의 적절한 보안 주체가 접근할 수 있도록 허용하는지 확인해야 해요. 키 ARN 형식은 접근하는 계정 맥락과 관계없이 키에 대한 명확한 참조를 제공하므로 교차 계정 시나리오에서 특히 중요해요.

더 알아보기 (Learn more)