Amazon S3의 액세스 제어
AWS에서 리소스는 작업할 수 있는 엔터티입니다. Amazon Simple Storage Service(S3)에서 버킷과 객체는 원래 Amazon S3 리소스입니다. 모든 S3 고객은 객체가 들어 있는 버킷을 가지고 있을 것입니다. S3에 새 기능이 추가되면서 리소스도 추가되었지만 모든 고객이 이러한 기능별 리소스를 사용하는 것은 아닙니다. Amazon S3 리소스에 대한 자세한 내용은 S3 리소스 섹션을 참조하세요.
모든 Amazon S3 리소스는 기본적으로 비공개입니다. 또한, 기본적으로 리소스를 만든 AWS 계정의 루트 사용자(리소스 소유자)와 해당 계정 내에서 필요한 권한을 가진 IAM 사용자는 직접 만든 리소스에 액세스할 수 있습니다. 리소스 소유자는 리소스에 액세스할 수 있는 다른 사용자와 리소스에서 다른 사용자가 수행할 수 있는 작업을 결정합니다. S3에는 다른 사람에게 내 S3 리소스에 대한 액세스 권한을 부여하는 데 사용할 수 있는 다양한 액세스 관리 도구가 있습니다.
다음 섹션에서는 S3 리소스에 대한 개요, 사용 가능한 S3 액세스 관리 도구, 각 액세스 관리 도구의 가장 좋은 사용 사례를 안내합니다. 이 섹션의 목록은 포괄적으로 다루는 것을 목표로 하며 모든 S3 리소스, 액세스 관리 도구 및 일반적인 액세스 관리 사용 사례를 포함합니다. 동시에 이 섹션들은 원하는 기술 세부 정보로 이어지는 디렉터리 역할을 하도록 설계되었습니다. 주제의 일부 내용을 잘 알고 있다면 필요한 섹션으로 건너뛰어도 됩니다.
S3 리소스 유형별 S3 API 작업 권한에 대한 자세한 내용은 Amazon S3 API 작업에 필요한 권한 섹션을 참조하세요.
주제
S3 리소스
원래 Amazon S3 리소스는 버킷과 버킷에 포함된 객체입니다. S3에 새 기능이 추가되면 새 리소스도 추가됩니다. 다음은 S3 리소스 및 해당 기능의 전체 목록입니다.
리소스 유형 | Amazon S3 기능 | 설명 |
---|---|---|
|
핵심 기능 |
버킷은 객체에 대한 컨테이너입니다. S3에 객체를 저장하려면 버킷을 생성한 다음 버킷에 객체를 하나 이상 업로드합니다. 자세한 내용은 Amazon S3 버킷 생성, 구성 및 작업 단원을 참조하십시오. |
|
객체는 파일과 해당 파일을 설명하는 모든 메타데이터일 수 있습니다. 객체가 버킷에 있으면 객체를 열고 다운로드하고 이동할 수 있습니다. 자세한 내용은 Amazon S3의 객체 작업 단원을 참조하십시오. |
|
|
액세스 포인트 |
액세스 포인트는 |
|
|
객체 Lambda 액세스 포인트는 Lambda 함수와도 연결된 버킷의 액세스 포인트입니다. 객체 Lambda 액세스 포인트를 통해 자체 코드를 Amazon S3 |
|
|
다중 리전 액세스 포인트는 애플리케이션이 여러 AWS 리전에 있는 Amazon S3 버킷의 요청을 이행하는 데 사용할 수 있는 글로벌 엔드포인트를 제공합니다. 다중 리전 액세스 포인트를 사용하여 단일 리전에서 사용되는 것과 동일한 아키텍처로 다중 리전 애플리케이션을 구축하면 전 세계 어디에서나 해당 애플리케이션을 실행할 수 있습니다. 다중 리전 액세스 포인트 글로벌 엔드포인트에 대한 애플리케이션 요청은 혼잡이 심한 퍼블릭 인터넷을 통해 요청을 보내는 대신 AWS 글로벌 네트워크를 통해 가장 가까운 Amazon S3 버킷으로 자동으로 라우팅됩니다. 자세한 내용은 다중 리전 액세스 포인트로 다중 리전 트래픽 관리 단원을 참조하십시오. |
|
S3 배치 작업 |
작업은 S3 배치 작업 기능의 리소스입니다. 지정한 Amazon S3 객체 목록에 대해 S3 배치 작업을 사용하여 대규모 배치 작업을 수행할 수 있습니다. Amazon S3는 배치 작업의 진행 상황을 추적하고 알림을 보내며 모든 작업에 대한 자세한 완료 보고서를 저장하여 감사 가능한 완전관리형 서버리스 경험을 제공합니다. 자세한 내용은 Batch Operations를 사용하여 대량으로 객체 작업 수행 단원을 참조하십시오. |
|
S3 Storage Lens |
S3 Storage Lens 구성은 조직 전체의 스토리지 지표 및 계정 전체의 사용자 데이터를 수집합니다. S3 Storage Lens는 관리자에게 조직 내 수백 또는 수천 개의 계정 전반에 걸친 객체 스토리지 사용 및 활동을 한 눈에 볼 수 있는 단일 보기와 다양한 집계 수준에서 인사이트를 생성하는 데 필요한 세부 정보를 제공합니다. 자세한 내용은 Amazon S3 스토리지 렌즈를 사용하여 스토리지 활동 및 사용량 평가 단원을 참조하십시오. |
|
S3 Storage Lens 그룹은 객체 메타데이터를 기반으로 사용자 지정 필터를 사용하여 지표를 집계합니다. S3 Storage Lens 그룹을 사용하면 연령별 객체 분포, 가장 일반적인 파일 유형 등과 같은 데이터의 특성을 조사할 수 있습니다. 자세한 내용은 S3 Storage Lens 그룹을 사용하여 지표 필터링 및 집계 단원을 참조하십시오. |
|
|
S3 Access Grants |
S3 Access Grants 인스턴스는 사용자가 생성한 S3 권한 부여를 위한 컨테이너입니다. S3 Access Grants를 사용하면 계정 내 IAM ID, 다른 계정의 IAM ID(크로스 계정) 및 회사 디렉터리에서 AWS IAM Identity Center에 추가된 디렉터리 ID에 대한 권한 부여를 Amazon S3 데이터에 생성할 수 있습니다. S3 Access Grants에 대한 자세한 내용은 S3 Access Grants를 통한 액세스 관리 섹션을 참조하세요. |
|
Access Grants 위치는 버킷, 버킷 내 접두사 또는 S3 Access Grants 인스턴스에 등록한 객체입니다. S3 Access Grants 인스턴스 내에 위치를 등록해야 해당 위치에 대한 권한 부여를 생성할 수 있습니다. 그런 다음, S3 Access Grants를 사용하면 계정 내 IAM ID, 다른 계정의 IAM ID(크로스 계정) 및 회사 디렉터리에서 AWS IAM Identity Center에 추가된 디렉터리 ID에 대한 권한 부여를 버킷, 접두사 또는 객체에 생성할 수 있습니다. S3 Access Grants에 대한 자세한 내용은 S3 Access Grants를 통한 액세스 관리 섹션을 참조하세요. |
|
|
Access Grant는 Amazon S3 데이터에 대한 개별 권한 부여입니다. S3 Access Grants를 사용하면 계정 내 IAM ID, 다른 계정의 IAM ID(크로스 계정) 및 회사 디렉터리에서 AWS IAM Identity Center에 추가된 디렉터리 ID에 대한 권한 부여를 Amazon S3 데이터에 생성할 수 있습니다. S3 Access Grants에 대한 자세한 내용은 S3 Access Grants를 통한 액세스 관리 섹션을 참조하세요. |
버킷
Amazon S3 버킷에는 범용 버킷과 디렉터리 버킷이라는 두 가지 유형이 있습니다.
-
범용 버킷은 S3 버킷 본래의 유형이며 대부분의 사용 사례 및 액세스 패턴에 권장됩니다. 또한 범용 버킷을 사용하면 S3 Express One Zone을 제외한 모든 스토리지 클래스에 객체를 저장할 수 있습니다. S3 스토리지 클래스에 대한 자세한 정보는 Amazon S3 스토리지 클래스 이해 및 관리 섹션을 참조하세요.
-
디렉터리 버킷은 S3 Express One Zone 스토리지 클래스를 사용합니다. 이 스토리지 클래스는 애플리케이션이 성능에 민감하고 10밀리초 미만의
PUT
및GET
지연 시간이 필요한 경우에 권장됩니다. 자세한 내용은 디렉터리 버킷 개요, 디렉터리 버킷 및 S3 Express One Zone, IAM을 사용한 리전 엔드포인트 API 권한 부여 단원을 참조하세요.
S3 리소스 분류
Amazon S3는 S3 리소스를 분류하고 정리하는 기능을 제공합니다. 리소스를 분류하면 리소스를 정리하는 데 유용할 뿐만 아니라 리소스 범주에 따라 액세스 관리 규칙을 설정할 수도 있습니다. 특히 접두사와 태그 지정은 액세스 관리 권한을 설정할 때 사용할 수 있는 두 가지 스토리지 정리 기능입니다.
참고
다음 정보는 범용 버킷에 적용됩니다. 디렉터리 버킷은 태그 지정을 지원하지 않으며 접두사 제한이 있습니다. 자세한 내용은 IAM을 사용한 리전 엔드포인트 API 권한 부여 단원을 참조하십시오.
-
접두사 - Amazon S3의 접두사는 객체 키 이름의 앞에 있는 문자열로, S3 버킷에 저장된 객체를 정리하는 데 사용됩니다. 슬래시(
/
)와 같은 구분자를 사용하여 객체 키 이름 내의 접두사 끝을 표시할 수 있습니다. 예를 들어engineering/
접두사로 시작하는 객체 키 이름이나marketing/campaigns/
접두사로 시작하는 객체 키 이름이 있을 수 있습니다. 접두사 끝에 구분자(예: 슬래시 문자(/
))를 사용하면 폴더 및 파일 이름 지정 규칙을 모방할 수 있습니다. 그러나 S3에서 접두사는 객체 키 이름의 일부입니다. 범용 S3 버킷에는 실제 폴더 계층 구조가 없습니다.Amazon S3는 접두사를 사용하여 객체 정리와 그룹화를 지원합니다. 접두사로 객체에 대한 액세스를 관리할 수도 있습니다. 예를 들어, 이름이 특정 접두사로 시작하는 객체만으로 액세스를 제한할 수 있습니다.
자세한 내용은 접두어를 사용한 객체 구성 단원을 참조하십시오. S3 콘솔은 폴더라는 개념을 사용합니다. 범용 버킷에서 폴더는 객체 키 이름 앞에 붙는 접두사입니다. 자세한 내용은 Amazon S3 콘솔에서 폴더를 사용하여 객체 구성 단원을 참조하십시오.
-
태그 - 각 태그는 리소스에 할당하는 키 값 페어입니다. 예를 들어,
topicCategory=engineering
태그를 사용하여 일부 리소스에 태그를 지정할 수 있습니다. 태그 지정을 통해 비용 할당, 분류 및 정리, 액세스 제어에 도움이 될 수 있습니다. 버킷 태그 지정은 비용 할당에만 사용됩니다. 정리 또는 액세스 제어를 위해 객체, S3 Storage Lens, 작업 및 S3 Access Grants에 태그를 지정할 수 있습니다. S3 Access Grants에서는 비용 할당을 위해서도 태그를 지정할 수 있습니다. 태그를 사용하여 리소스에 대한 액세스를 제어하는 예로, 특정 태그 또는 태그 조합이 있는 객체만 공유할 수 있습니다.자세한 내용은 IAM 사용 설명서의 리소스 태그를 사용하여 AWS에 대한 액세스 제어를 참조하세요.
ID
Amazon S3에서 리소스 소유자는 리소스를 생성한 ID(예: 버킷 또는 객체)입니다. 기본적으로 리소스를 생성한 계정의 루트 사용자와 필요한 권한이 있는 계정 내의 IAM ID만 S3 리소스에 액세스할 수 있습니다. 리소스 소유자는 다른 ID에 자신의 S3 리소스에 대한 액세스 권한을 부여할 수 있습니다.
리소스를 소유하지 않은 ID는 해당 리소스에 대한 액세스를 요청할 수 있습니다. 리소스에 대한 요청은 인증되거나 인증되지 않습니다. 인증된 요청에는 요청 발신자를 인증하는 서명 값을 포함해야 하지만 인증되지 않은 요청에는 서명이 필요하지 않습니다. 인증된 사용자에게만 액세스 권한을 부여하는 것이 좋습니다. 요청 인증에 대한 자세한 내용은 Amazon S3 API 참조에서 요청을 참조하세요.
중요
AWS 계정의 루트 사용자 자격 증명을 사용하여 인증된 요청을 하지 않는 것이 좋습니다. 대신, IAM 역할을 생성하고 해당 역할에 모든 액세스 권한을 부여합니다. 이러한 역할이 부여된 사용자를 관리자 사용자라고 합니다. AWS 계정 루트 사용자 자격 증명 대신, 관리자 역할에 할당된 자격 증명을 사용하여 AWS와 상호 작용하고 버킷 생성, 사용자 생성, 권한 부여 등의 태스크를 수행할 수 있습니다. 자세한 내용은 AWS 일반 참조의 AWS 계정 root user credentials and IAM user credentials 및 IAM 사용 설명서의 IAM의 보안 모범 사례를 참조하세요.
Amazon S3의 데이터에 액세스하는 ID는 다음 중 하나일 수 있습니다.
AWS 계정 소유자
리소스를 만든 AWS 계정. 버킷을 생성한 계정을 예로 들 수 있습니다. 이 계정이 리소스를 소유합니다. 자세한 내용은 AWS 계정 루트 사용자를 참조하세요.
AWS 계정 소유자와 동일한 계정에 있는 IAM ID
S3 액세스가 필요한 새 팀원을 위한 계정을 설정할 때 AWS 계정 소유자는 AWS Identity and Access Management(IAM)를 사용하여 사용자, 그룹 및 역할을 생성할 수 있습니다. 그런 다음 AWS 계정 소유자가 이러한 IAM ID와 리소스를 공유할 수 있습니다. 또한 계정 소유자는 IAM ID에 부여할 권한을 지정하여 공유 리소스에서 수행할 수 있는 작업을 허용하거나 거부할 수 있습니다.
IAM ID를 통해 사용자가 공유 리소스에 액세스하기 전에 로그인 자격 증명을 입력하도록 요구하는 등 더욱 강력한 기능을 구현할 수 있습니다. IAM ID를 사용하면 IAM 다중 인증(MFA)의 한 형태를 구현하여 강력한 ID 기반을 지원할 수 있습니다. IAM 모범 사례는 개별 사용자에게 권한을 부여하는 대신 액세스 관리를 위한 역할을 생성하는 것입니다. 개별 사용자에게 적절한 역할을 할당합니다. 자세한 설명은 IAM의 보안 모범 사례를 참조하세요.
기타 AWS 계정 소유자 및 해당 IAM ID(크로스 계정 액세스)
AWS 계정 소유자는 다른 AWS 계정 소유자 또는 다른 AWS 계정에 속한 IAM ID에게 리소스에 대한 액세스 권한을 부여할 수도 있습니다.
참고
권한 위임 - AWS 계정이 리소스를 소유하는 경우 다른 AWS 계정에 해당 권한을 부여할 수 있습니다. 그런 다음 해당 계정은 권한 또는 권한의 하위 세트를 동일한 계정에 속한 사용자에게 위임할 수 있습니다. 이를 권한 위임이라고 합니다. 그러나 다른 계정으로부터 권한을 받는 계정은 다른 AWS 계정에 '크로스 계정'으로 해당 권한을 위임할 수 없습니다.
익명 사용자(퍼블릭 액세스)
AWS 계정 소유자는 리소스를 공개할 수 있습니다. 리소스를 공개하면 익명 사용자와 리소스를 공유하는 것입니다. 2023년 4월 이후 생성된 버킷은 이 설정을 변경하지 않는 한 기본적으로 모든 퍼블릭 액세스를 차단합니다. 퍼블릭 액세스를 차단하도록 버킷을 설정하고 인증된 사용자에게만 액세스 권한을 부여하는 것이 좋습니다. 퍼블릭 액세스 차단에 대한 자세한 내용은 Amazon S3 스토리지에 대한 퍼블릭 액세스 차단 섹션을 참조하십시오.
AWS 서비스
리소스 소유자는 다른 AWS 서비스에 Amazon S3 리소스에 대한 액세스 권한을 부여할 수 있습니다. 예를 들어, AWS CloudTrail 서비스에 로그 파일을 버킷에 쓸 수 있는 s3:PutObject
권한을 부여할 수 있습니다. 자세한 내용은 서비스에 대한 AWS 서비스에 액세스 권한 제공을 참조하세요.
기업 디렉터리 ID
리소스 소유자는 S3 Access Grants를 사용하여 회사 디렉터리의 사용자 또는 역할에 S3 리소스에 대한 액세스 권한을 부여할 수 있습니다. AWS IAM Identity Center에 회사 디렉터리를 추가하는 방법에 대한 자세한 정보는 What is IAM Identity Center?를 참고하세요.
버킷 또는 리소스 소유자
버킷 생성 및 객체 업로드에 사용하는 AWS 계정은 해당 리소스를 소유합니다. 버킷 소유자는 다른 AWS 계정(또는 다른 계정의 사용자)에 객체를 업로드할 수 있는 교차 계정 권한을 부여할 수 있습니다.
다른 계정이 버킷에 객체를 업로드하도록 버킷 소유자가 허용하면 기본적으로 버킷 소유자가 자신의 버킷에 업로드된 모든 객체를 소유합니다. 그러나 버킷 소유자 적용과 버킷 소유자 기본 설정 버킷 설정이 모두 비활성화된 경우 객체를 업로드하는 AWS 계정이 해당 객체를 소유하며 버킷 소유자는 다른 계정이 소유한 객체에 대한 권한을 갖지 않습니다. 단, 다음과 같은 경우는 예외입니다.
-
버킷 소유자가 요금을 지불하는 경우. 버킷 소유자는 객체의 소유 여부와 관계 없이 모든 객체에 대한 액세스를 거부하거나 버킷에 있는 객체를 삭제할 수 있습니다.
-
버킷 소유자는 객체 소유 여부와 관계 없이 모든 객체를 아카이빙하거나 아카이빙된 객체를 복원할 수 있습니다. 아카이빙이란 객체를 저장하는 데 사용하는 스토리지 클래스를 말합니다. 자세한 내용은 객체 수명 주기 관리 단원을 참조하십시오.
액세스 관리 도구
Amazon S3은 다양한 보안 기능 및 도구를 제공합니다. 다음은 이러한 기능 및 도구의 전체 목록입니다. 이러한 액세스 관리 도구가 모두 필요한 것은 아니지만 Amazon S3 리소스에 대한 액세스 권한을 부여하려면 하나 이상의 도구를 사용해야 합니다. 이러한 도구를 올바르게 적용하면 의도한 사용자만 리소스에 액세스하도록 할 수 있습니다.
가장 일반적으로 사용되는 액세스 관리 도구는 액세스 정책입니다. 액세스 정책은 AWS 리소스에 연결된 리소스 기반 정책일 수 있습니다(예: 버킷의 버킷 정책). 액세스 정책은 IAM 사용자, 그룹 또는 역할과 같은 AWS Identity and Access Management(IAM) ID에 연결된 ID 기반 정책일 수도 있습니다. AWS 계정, IAM 사용자, 그룹, 역할에 리소스에서 작업을 수행할 수 있는 권한을 부여하는 액세스 정책을 작성하세요. 예를 들어, 다른 AWS 계정에서 내 버킷에 객체를 업로드할 수 있도록 다른 계정에 PUT Object
권한을 부여할 수 있습니다.
액세스 정책은 누가 무엇에 액세스 할 수 있는지를 나타냅니다. 요청을 받으면 Amazon S3가 모든 액세스 정책을 평가해 권한 부여나 요청 거부를 결정합니다. Amazon S3의 해당 정책 평가에 대한 자세한 정보는 Amazon S3에서 요청에 권한을 부여하는 방법 단원을 참조하십시오.
Amazon S3에서 제공되는 액세스 관리 도구는 다음과 같습니다.
Amazon S3 버킷 정책은 특정 버킷에 연결된 JSON 형식 AWS Identity and Access Management(IAM) 리소스 기반 정책입니다. 버킷 정책을 사용하여 다른 AWS 계정 또는 IAM ID에 버킷과 버킷에 포함된 객체에 대한 권한을 부여합니다. 버킷 정책을 사용하면 많은 S3 액세스 관리 사용 사례를 충족할 수 있습니다. 버킷 정책을 사용하면 버킷 액세스를 개인화하여 승인된 ID만 리소스에 액세스하고 리소스 내에서 작업을 수행하도록 할 수 있습니다. 자세한 내용은 Amazon S3의 버킷 정책 단원을 참조하십시오.
다음은 버킷 정책의 예입니다. 버킷 정책은 JSON 파일로 나타냅니다. 이 예시 정책은 버킷의 모든 객체에 IAM 역할 읽기 권한을 부여합니다. 여기에는 amzn-s3-demo-bucket1
버킷의 객체에 대해 s3:GetObject
작업(읽기 권한)을 허용하는 BucketLevelReadPermissions
문이 하나 있습니다. 이 정책은 IAM 역할을 Principal
로 지정함으로써 이 역할을 가진 모든 IAM 사용자에게 액세스 권한을 부여합니다. 이 정책 예를 사용하려면
를 실제 정보로 바꾸세요.user
input placeholders
{ "Version":"2012-10-17", "Statement": [ { "Sid":"
BucketLevelReadPermissions
", "Effect":"Allow", "Principal": { "AWS": "arn:aws:iam::123456789101
:role/s3-role
" }, "Action":["s3:GetObject"], "Resource":["arn:aws:s3:::amzn-s3-demo-bucket1/*
"] }] }
참고
정책을 생성할 때 Principal
요소에 와일드카드 문자(*
)를 사용하면 모든 사용자가 Amazon S3 리소스에 액세스할 수 있게 되므로 와일드카드 문자는 사용하지 않도록 합니다. 대신, 버킷에 액세스할 수 있는 사용자 또는 그룹을 명시적으로 지정하거나 정책의 조건 절을 사용하여 충족해야 하는 조건을 나열하세요. 또한 사용자 또는 그룹의 작업에 와일드카드 문자를 포함하는 대신 해당되는 경우 사용자 또는 그룹에 특정 권한을 부여합니다.
ID 기반 또는 IAM 사용자 정책은 일종의 AWS Identity and Access Management(IAM) 정책입니다. ID 기반 정책은 AWS 계정의 IAM 사용자, 그룹 또는 역할에 연결된 JSON 형식의 정책입니다. ID 기반 정책을 사용하여 버킷이나 객체에 대한 IAM ID 액세스 권한을 부여할 수 있습니다. 내 계정으로 IAM 사용자, 그룹, 역할을 만들고 액세스 정책을 연결할 수 있습니다. 그런 다음 Amazon S3 리소스를 포함한 AWS 리소스에 대한 액세스 권한을 부여할 수 있습니다. 자세한 내용은 Amazon S3의 ID 기반 정책 단원을 참조하십시오.
다음은 ID 기반 정책의 예시입니다. 예시로 든 정책은 연결된 IAM 역할이 버킷과 버킷에 포함된 객체에 대해 6개의 서로 다른 Amazon S3 작업(권한)을 수행할 수 있도록 허용합니다. 이 정책을 계정의 IAM 역할에 연결하고 일부 IAM 사용자에게 역할을 할당하면 이 역할을 가진 사용자는 정책에 지정된 리소스(버킷)에서 이러한 작업을 수행할 수 있습니다. 이 정책 예를 사용하려면
를 실제 정보로 바꾸세요.user input placeholders
{ "Version": "2012-10-17", "Statement": [ { "Sid": "
AssignARoleActions
", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*
", "arn:aws:s3:::amzn-s3-demo-bucket1
" ] }, { "Sid": "AssignARoleActions2
", "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" } ] }
S3 Access Grants를 사용하여 회사 ID 디렉터리의 ID(예: Active Directory) 및 AWS Identity and Access Management(IAM) ID 모두에 대해 Amazon S3 데이터에 대한 액세스 권한을 생성할 수 있습니다. S3 Access Grants는 대규모로 데이터 권한을 관리하는 데 도움이 됩니다. 또한 S3 Access Grants는 AWS CloudTrail의 S3 데이터에 액세스하는 데 사용된 최종 사용자 ID와 애플리케이션을 로깅합니다. 이를 통해 S3 버킷의 데이터에 대한 모든 액세스에 대해 최종 사용자 ID까지 상세한 감사 기록이 제공됩니다. 자세한 내용은 S3 Access Grants를 통한 액세스 관리 단원을 참조하십시오.
Amazon S3 액세스 포인트는 S3의 공유 데이터세트를 사용하는 애플리케이션에 대한 대규모 데이터 액세스 관리를 간소화합니다. 액세스 포인트는 버킷에 연결된 명명된 네트워크 엔드포인트입니다. 액세스 포인트를 사용하여 객체 업로드 및 검색과 같은 S3 객체 작업을 수행할 수 있습니다. 버킷에는 최대 1만 개의 액세스 포인트가 연결될 수 있으며, 각 액세스 포인트에 대해 고유한 권한과 네트워크 제어를 적용하여 S3 객체에 대한 액세스를 세부적으로 제어할 수 있습니다. S3 액세스 포인트는 동일한 계정 또는 다른 신뢰할 수 있는 계정의 버킷과 연결할 수 있습니다. 액세스 포인트 정책은 기본 버킷 정책과 함께 평가되는 리소스 기반 정책입니다. 자세한 내용은 액세스 포인트로 공유 데이터세트에 대한 액세스 관리 단원을 참조하십시오.
ACL은 피부여자와 그에 부여된 권한을 식별하는 권한 부여 목록입니다. ACL은 다른 AWS 계정에 기본적인 읽기 또는 쓰기 권한을 부여합니다. ACL은 Amazon S3별 XML 스키마를 사용합니다. ACL은 일종의 AWS Identity and Access Management(IAM) 정책입니다. 객체 ACL은 객체에 대한 액세스를 관리하는 데 사용되고, 버킷 ACL은 버킷에 대한 액세스를 관리하는 데 사용됩니다. 버킷 정책의 경우 전체 버킷에 적용되는 하나의 버킷 정책이 있지만 객체 ACL은 객체별로 지정됩니다. 각 객체에 대해 액세스를 개별적으로 제어해야 하는 드문 상황을 제외하고는 ACL을 비활성화한 채로 두는 것이 좋습니다. ACL 사용에 대한 자세한 내용은 객체 소유권 제어 및 버킷에 대해 ACL 사용 중지 섹션을 참조하세요.
주의
Amazon S3의 최신 사용 사례 대부분은 ACL을 사용할 필요가 없습니다.
다음은 버킷 ACL의 예입니다. ACL 권한 부여는 완전한 제어 권한을 지닌 버킷 소유자를 나타냅니다.
<?xml version="1.0" encoding="UTF-8"?> <AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> <ID>
Owner-Canonical-User-ID
</ID> <DisplayName>owner-display-name
</DisplayName> </Owner> <AccessControlList> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Canonical User"> <ID>Owner-Canonical-User-ID
</ID> <DisplayName>display-name
</DisplayName> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> </AccessControlList> </AccessControlPolicy>
객체에 대한 액세스를 관리하려면 객체 소유자여야 합니다. 객체 소유권 버킷 수준 설정을 사용하여 버킷에 업로드되는 객체의 소유권을 제어할 수 있습니다. 또한 ACL을 활성화하는 데도 객체 소유권을 사용합니다. 기본적으로 객체 소유권은 버킷 소유자 적용 설정으로 설정되며 모든 ACL이 비활성화되어 있습니다. ACL이 비활성화되면 버킷 소유자는 버킷의 모든 객체를 소유하고 데이터에 대한 액세스를 독점적으로 관리합니다. 액세스를 관리하기 위해 버킷 소유자는 정책이나 다른 액세스 관리 도구(ACL 제외)를 사용합니다. 자세한 내용은 객체 소유권 제어 및 버킷에 대해 ACL 사용 중지 단원을 참조하십시오.
객체 소유권에는 버킷에 업로드된 객체의 소유권을 제어하고 ACL을 활성화하는 데 사용할 수 있는 다음과 같은 세 가지 설정이 있습니다.
ACL 비활성화됨
-
버킷 소유자 적용(기본값) – ACL이 비활성화되고 버킷 소유자는 버킷의 모든 객체를 자동으로 소유하고 완전히 제어합니다. ACL은 S3 버킷의 데이터에 대한 권한에 영향을 주지 않습니다. 버킷은 정책을 독점적으로 사용하여 액세스 제어를 정의합니다.
ACL 활성화됨
-
버킷 소유자 기본(Bucket owner preferred) – 버킷 소유자가
bucket-owner-full-control
미리 제공 ACL을 사용하여 다른 계정이 버킷에 작성하는 새 객체를 소유하고 완전히 제어합니다. -
객체 작성자(Object writer) – 객체를 업로드하는 AWS 계정은 객체를 소유하고 완전히 제어하며 ACL을 통해 다른 사용자에게 이에 대한 액세스 권한을 부여할 수 있습니다.
추가 모범 사례
다음 버킷 설정과 도구를 사용하여 전송 중 데이터와 저장된 데이터를 보호하는 것을 고려하세요. 이 두 가지 데이터 보호는 데이터의 무결성과 액세스 가능성을 유지하는 데 매우 중요합니다.
-
퍼블릭 액세스 차단 - 기본 버킷 수준 설정인 퍼블릭 액세스 차단을 비활성화하지 마세요. 이 설정은 기본적으로 데이터에 대한 퍼블릭 액세스를 차단합니다. 퍼블릭 액세스 차단에 대한 자세한 내용은 Amazon S3 스토리지에 대한 퍼블릭 액세스 차단 섹션을 참조하십시오.
-
S3 버전 관리 - 데이터 무결성을 위해 S3 버전 관리 버킷 설정을 구현하여 업데이트 시 객체를 덮어쓰지 않고 객체의 버전을 만들 수 있습니다. 필요한 경우 S3 버전 관리를 사용하여 이전 버전을 보존, 검색 및 복원할 수 있습니다. S3 버전 관리에 대한 자세한 내용은 S3 버전 관리로 여러 버전의 객체 유지 섹션을 참조하세요.
-
S3 객체 잠금 - S3 객체 잠금은 데이터 무결성을 확보하기 위해 구현할 수 있는 또 다른 설정입니다. 이 기능은 WORM(Write Once Read Many) 모델을 구현하여 객체를 변경할 수 없게 저장할 수 있습니다. 객체 잠금에 대한 자세한 내용은 Object Lock으로 객체 잠금 섹션을 참조하세요.
-
객체 암호화 - Amazon S3는 전송 중 데이터와 저장된 데이터를 보호하는 몇 가지 객체 암호화 옵션을 제공합니다. 서버 측 암호화 - 서버 측 암호화는 데이터 센터의 디스크에 저장하기 전에 객체를 암호화하고 객체를 다운로드할 때 암호를 해독합니다. 요청을 인증하면 액세스 권한을 갖게 되며, 객체의 암호화 여부와 관계없이 액세스 방식에는 차이가 없습니다. 자세한 내용은 서버 측 암호화를 사용하여 데이터 보호 단원을 참조하십시오. S3는 새로 업로드한 객체를 기본적으로 암호화합니다. 자세한 내용은 Amazon S3 버킷에 대한 기본 서버 측 암호화 동작 설정 단원을 참조하십시오. 클라이언트 측 암호화는 Amazon S3로 보내기 전에 데이터를 암호화하는 것을 가리킵니다. 자세한 내용은 클라이언트측 암호화를 사용하여 데이터 보호 단원을 참조하십시오.
-
서명 방법 - 서명 버전 4는 HTTP로 전송된 AWS 요청에 인증 정보를 추가하는 프로세스입니다. 보안을 위해 대부분의 AWS 요청은 액세스 키 ID와 비밀 액세스 키로 구성된 액세스 키로 서명해야 합니다. 이 두 키는 일반적으로 보안 자격 증명이라고 합니다. 자세한 내용은 요청 인증(AWS 서명 버전 4) 및 서명 버전 4 서명 프로세스를 참조하십시오.
작업
S3 권한 및 조건 키의 전체 목록은 서비스 승인 참조에서 ctions, resources, and condition keys for Amazon S3를 참조하세요.
S3 리소스 유형별 S3 API 작업 권한에 대한 자세한 내용은 Amazon S3 API 작업에 필요한 권한 섹션을 참조하세요.
작업
Amazon S3의 AWS Identity and Access Management(IAM) 작업은 S3 버킷 또는 객체에 수행할 수 있는 작업입니다. 이러한 작업을 ID에 부여하면 ID가 S3 리소스에서 작업을 수행할 수 있습니다. S3 작업의 예로는 버킷의 객체를 읽기 위한 s3:GetObject
, 버킷에 객체를 쓰기 위한 s3:PutObject
등이 있습니다.
조건 키
작업 외에도 IAM 조건 키는 조건이 충족될 때만 액세스 권한을 부여하도록 제한됩니다. 조건 키는 선택 사항입니다.
참고
리소스 기반 액세스 정책(예: 버킷 정책) 또는 ID 기반 정책에서 다음을 지정할 수 있습니다.
-
정책 문의
Action
요소에 있는 작업 또는 일련의 작업입니다. -
정책 문의
Effect
요소에서 나열된 작업을 허용하도록Allow
를 지정하거나 나열된 작업을 차단하도록Deny
를 지정할 수 있습니다. 최소 권한의 원칙을 더 엄격히 지키기 위해 액세스 정책에서Effect
요소의Deny
문은 최대한 광범위해야 하며Allow
명령문은 최대한 제한적이어야 합니다.s3:*
작업과 페어링된Deny
효과 또한 정책 조건 명령문에 포함된 ID에게 옵트인 모범 사례를 적용하는 좋은 방법입니다. -
정책 문의
Condition
요소에 있는 조건 키입니다.
액세스 관리 사용 사례
Amazon S3는 리소스 소유자에게 액세스 권한 부여를 위한 다양한 도구를 제공합니다. 사용하는 S3 액세스 관리 도구는 공유하려는 S3 리소스, 액세스 권한을 부여받는 ID, 허용하거나 거부하려는 작업에 따라 달라집니다. S3 리소스에 대한 액세스를 관리하는 데 S3 액세스 관리 도구 중 하나 또는 도구의 조합을 사용할 수 있습니다.
대부분의 경우 액세스 정책을 사용하여 권한을 관리할 수 있습니다. 액세스 정책은 버킷과 같은 리소스 또는 다른 Amazon S3 리소스(S3 리소스)에 연결된 리소스 기반 정책일 수 있습니다. 액세스 정책은 계정 내 AWS Identity and Access Management(IAM) 사용자, 그룹 또는 역할에 연결된 ID 기반 정책일 수도 있습니다. 사용 사례에 버킷 정책이 더 적합할 수도 있습니다. 자세한 내용은 Amazon S3의 버킷 정책 단원을 참조하십시오. 또는 AWS Identity and Access Management(IAM)를 사용하여 AWS 계정 내에서 IAM 사용자, 그룹, 역할을 만들고 ID 기반 정책을 통해 이들의 버킷과 객체에 대한 액세스를 관리할 수 있습니다. 자세한 내용은 Amazon S3의 ID 기반 정책 단원을 참조하십시오.
이러한 액세스 관리 옵션을 탐색하는 데 도움이 되도록 다음은 각 S3 액세스 관리 도구에 대한 일반적인 Amazon S3 고객 사용 사례 및 권장 사항입니다.
모든 액세스 관리 도구가 이 기본 사용 사례를 충족할 수 있습니다. 이 사용 사례에는 다음과 같은 액세스 관리 도구를 사용하는 것이 좋습니다.
-
버킷 정책 - 버킷 하나 또는 소수의 버킷에 대한 액세스 권한을 부여하거나 버킷 액세스 권한이 버킷마다 비슷하다면 버킷 정책을 사용하세요. 버킷 정책을 사용하면 각 버킷에 대해 하나의 정책을 관리합니다. 자세한 내용은 Amazon S3의 버킷 정책 단원을 참조하십시오.
-
ID 기반 정책 - 버킷마다 액세스 권한이 다른 버킷 수가 매우 많고 관리할 사용자 역할이 적은 경우 사용자, 그룹 또는 역할에 대해 IAM 정책을 사용할 수 있습니다. Amazon S3 리소스뿐 아니라 다른 AWS 리소스에 대한 사용자 액세스를 관리하는 경우에도 IAM 정책을 사용하는 것이 좋습니다. 자세한 내용은 예제 1: 버킷 소유자가 자신의 사용자에게 버킷 권한 부여 단원을 참조하십시오.
-
S3 Access Grants - S3 Access Grants를 사용하여 S3 버킷, 접두사 또는 객체에 대한 액세스 권한을 부여할 수 있습니다. S3 Access Grants를 사용하면 대규모로 다양한 객체 수준 권한을 지정할 수 있지만, 버킷 정책의 크기는 20KB로 제한됩니다. 자세한 내용은 S3 Access Grants 시작하기 단원을 참조하십시오.
-
액세스 포인트 - 버킷에 연결된 명명된 네트워크 엔드포인트인 액세스 포인트를 사용할 수 있습니다. 버킷에는 최대 1만 개의 액세스 포인트가 연결될 수 있으며, 각 액세스 포인트에 대해 고유한 권한과 네트워크 제어를 적용하여 S3 객체에 대한 액세스를 세부적으로 제어할 수 있습니다. 자세한 내용은 액세스 포인트로 공유 데이터세트에 대한 액세스 관리 단원을 참조하십시오.
다른 AWS 계정에 권한을 부여하려면 버킷 정책 또는 다음과 같은 권장 액세스 관리 도구 중 하나를 사용해야 합니다. 이 사용 사례에는 ID 기반 액세스 정책을 사용할 수 없습니다. 크로스 계정 액세스 권한 부여에 대한 자세한 내용은 Amazon S3 버킷에 있는 객체에 크로스 계정 액세스를 제공하려면 어떻게 해야 하나요?
이 사용 사례에는 다음과 같은 액세스 관리 도구를 사용하는 것이 좋습니다.
-
버킷 정책 - 버킷 정책을 사용하면 각 버킷에 대해 하나의 정책을 관리합니다. 자세한 내용은 Amazon S3의 버킷 정책 단원을 참조하십시오.
-
S3 Access Grants - S3 Access Grants를 사용하여 S3 버킷, 접두사 또는 객체에 대한 크로스 계정 권한을 부여할 수 있습니다. S3 Access Grants를 사용하면 대규모로 다양한 객체 수준 권한을 지정할 수 있지만, 버킷 정책의 크기는 20KB로 제한됩니다. 자세한 내용은 S3 Access Grants 시작하기 단원을 참조하십시오.
-
액세스 포인트 - 버킷에 연결된 명명된 네트워크 엔드포인트인 액세스 포인트를 사용할 수 있습니다. 버킷에는 최대 1만 개의 액세스 포인트가 연결될 수 있으며, 각 액세스 포인트에 대해 고유한 권한과 네트워크 제어를 적용하여 S3 객체에 대한 액세스를 세부적으로 제어할 수 있습니다. 자세한 내용은 액세스 포인트로 공유 데이터세트에 대한 액세스 관리 단원을 참조하십시오.
예를 들어 버킷 정책에서는 특정 키 이름 접두사를 공유하거나 특정 태그가 있는 버킷 내 객체에 대한 액세스 권한을 부여할 수 있습니다. 키 이름 접두사 logs/
로 시작하는 객체에 대해 읽기 권한을 부여할 수 있습니다. 그러나 액세스 권한이 객체별로 다른 경우 버킷 정책을 사용하여 개별 객체에 권한을 부여하는 것은 실용적이지 않을 수 있습니다. 특히 버킷 정책의 크기가 20KB로 제한되어 있기 때문에 더욱 그렇습니다.
이 사용 사례에는 다음과 같은 액세스 관리 도구를 사용하는 것이 좋습니다.
-
S3 Access Grants - S3 Access Grants를 사용하여 객체 수준 또는 접두사 수준의 권한을 관리할 수 있습니다. 버킷 정책과 달리 S3 Access Grants를 사용하면 대규모로 다양한 객체 수준 권한을 지정할 수 있습니다. 버킷 정책은 크기가 20KB로 제한됩니다. 자세한 내용은 S3 Access Grants 시작하기 단원을 참조하십시오.
-
액세스 포인트 - 액세스 포인트를 사용하여 객체 수준 또는 접두사 수준의 권한을 관리할 수 있습니다. 액세스 포인트는 버킷에 연결된 명명된 네트워크 엔드포인트입니다. 버킷에는 최대 1만 개의 액세스 포인트가 연결될 수 있으며, 각 액세스 포인트에 대해 고유한 권한과 네트워크 제어를 적용하여 S3 객체에 대한 액세스를 세부적으로 제어할 수 있습니다. 자세한 내용은 액세스 포인트로 공유 데이터세트에 대한 액세스 관리 단원을 참조하십시오.
-
ACL - 액세스 제어 목록(ACL)은 사용하지 않는 것이 좋습니다. ACL은 객체당 권한 부여의 수가 100개로 제한되기 때문입니다. 하지만 ACL을 활성화하는 경우 버킷 설정에서 객체 소유권을 버킷 소유자 기본 설정과 ACL 활성화됨으로 설정하세요. 이 설정을 사용하면
bucket-owner-full-control
미리 제공 ACL로 작성된 새 객체는 객체 작성자가 아닌 버킷 소유자가 자동으로 소유합니다. 그런 다음 XML 형식의 액세스 정책인 객체 ACL을 사용하여 다른 사용자에게 객체에 대한 액세스 권한을 부여할 수 있습니다. 자세한 내용은 ACL(액세스 제어 목록) 개요 단원을 참조하십시오.
이 사용 사례에는 다음과 같은 액세스 관리 도구를 사용하는 것이 좋습니다.
-
버킷 정책 - 버킷 정책을 사용하면 각 버킷에 대해 하나의 정책을 관리합니다. 자세한 내용은 Amazon S3의 버킷 정책 단원을 참조하십시오.
-
액세스 포인트 - 액세스 포인트는 버킷에 연결된 명명된 네트워크 엔드포인트입니다. 버킷에는 최대 1만 개의 액세스 포인트가 연결될 수 있으며, 각 액세스 포인트에 대해 고유한 권한과 네트워크 제어를 적용하여 S3 객체에 대한 액세스를 세부적으로 제어할 수 있습니다. 자세한 내용은 액세스 포인트로 공유 데이터세트에 대한 액세스 관리 단원을 참조하십시오.
이 사용 사례에는 다음과 같은 액세스 관리 도구를 사용하는 것이 좋습니다.
-
액세스 포인트 - 액세스 포인트는 버킷에 연결된 명명된 네트워크 엔드포인트입니다. 버킷에는 최대 1만 개의 액세스 포인트가 연결될 수 있으며, 각 액세스 포인트에 대해 고유한 권한과 네트워크 제어를 적용하여 S3 객체에 대한 액세스를 세부적으로 제어할 수 있습니다. 각 액세스 포인트는 기본 버킷에 연결된 버킷 정책과 함께 작동하는 사용자 지정 액세스 포인트 정책을 적용합니다. 자세한 내용은 액세스 포인트로 공유 데이터세트에 대한 액세스 관리 단원을 참조하십시오.
Amazon S3용 Virtual Private Cloud(VPC) 엔드포인트는 VPC 내의 논리적 엔터티로서, S3에만 연결을 허용합니다. 이 사용 사례에는 다음과 같은 액세스 관리 도구를 사용하는 것이 좋습니다.
-
VPC 환경의 버킷 - 버킷 정책을 사용하여 버킷에 액세스할 수 있는 사람과 이들이 액세스할 수 있는 VPC 엔드포인트를 제어할 수 있습니다. 자세한 내용은 버킷 정책을 사용하여 VPC 엔드포인트에서 액세스 제어 단원을 참조하십시오.
-
액세스 포인트 - 액세스 포인트를 설정하는 경우 액세스 포인트 정책을 사용할 수 있습니다. Virtual Private Cloud(VPC)의 요청만 수락하도록 액세스 포인트를 구성하여 프라이빗 네트워크에 대한 Amazon S3 데이터 액세스를 제한할 수 있습니다. 또한 각 액세스 포인트에 대해 사용자 지정 퍼블릭 액세스 차단 설정을 구성할 수 있습니다. 자세한 내용은 액세스 포인트로 공유 데이터세트에 대한 액세스 관리 단원을 참조하십시오.
S3를 사용하면 정적 웹 사이트를 호스팅하여 누구나 S3 버킷에서 호스팅되는 웹 사이트의 콘텐츠를 볼 수 있도록 허용할 수 있습니다.
이 사용 사례에는 다음과 같은 액세스 관리 도구를 사용하는 것이 좋습니다.
-
Amazon CloudFront - 이 솔루션을 사용하면 Amazon S3 정적 웹 사이트를 공개적으로 호스팅하는 동시에 버킷 콘텐츠에 대한 모든 퍼블릭 액세스를 계속 차단할 수 있습니다. 네 개의 S3 퍼블릭 액세스 차단 설정을 모두 활성화하여 S3 정적 웹 사이트를 호스팅하려는 경우 Amazon CloudFront 원본 액세스 제어(OAC)를 사용할 수 있습니다. Amazon CloudFront는 안전한 정적 웹 사이트를 설정하는 데 필요한 기능을 제공합니다. 또한 이 솔루션을 사용하지 않는 Amazon S3 정적 웹 사이트는 HTTP 엔드포인트만 지원할 수 있습니다. CloudFront는 Amazon S3의 내구성 있는 스토리지를 사용하면서 HTTPS와 같은 추가 보안 헤더를 제공합니다. HTTPS는 일반적인 HTTP 요청을 암호화하고 일반적인 사이버 공격으로부터 보호함으로써 보안을 강화합니다.
자세한 내용은 Amazon CloudFront 개발자 안내서의 안전한 정적 웹 사이트 시작하기를 참조하십시오.
-
Amazon S3 버킷을 공개적으로 액세스할 수 있도록 설정 - 공개적으로 액세스되는 정적 웹 사이트로 사용할 버킷을 구성할 수 있습니다.
주의
이 방법은 권장하지 않습니다. 대신 Amazon S3 정적 웹 사이트를 Amazon CloudFront의 일부로 사용하는 것이 좋습니다. 자세한 내용은 이전 옵션을 참조하거나 안전한 정적 웹 사이트 시작하기를 참조하세요.
Amazon CloudFront를 사용하지 않고 Amazon S3 정적 웹 사이트를 만들려면 먼저 퍼블릭 액세스 차단 설정을 모두 비활성화해야 합니다. 정적 웹 사이트에 대해 버킷 정책을 작성할 때는
s3:GetObject
작업만 허용하고ListObject
또는PutObject
권한은 허용하지 않도록 합니다. 이렇게 하면 사용자가 버킷의 모든 객체를 보거나 자체 콘텐츠를 추가할 수 없습니다. 자세한 내용은 웹 사이트 액세스에 대한 권한 설정 단원을 참조하십시오.
새 Amazon S3 버킷을 생성할 때 퍼블릭 액세스 차단 설정이 기본적으로 활성화됩니다. 퍼블릭 액세스 차단에 대한 자세한 내용은 Amazon S3 스토리지에 대한 퍼블릭 액세스 차단 섹션을 참조하십시오.
버킷에 대해 퍼블릭 액세스를 허용하지 않는 것이 좋습니다. 하지만 특정 사용 사례에서 허용해야만 한다면 이 사용 사례에 맞는 다음 액세스 관리 도구를 사용하는 것이 좋습니다.
-
퍼블릭 액세스 차단 설정 비활성화 - 버킷 소유자가 버킷에 대한 인증되지 않은 요청을 허용할 수 있습니다. 예를 들어 인증되지 않은 PUT Object 요청은 버킷에 퍼블릭 버킷 정책이 있거나 버킷 ACL이 퍼블릭 액세스 권한을 부여할 때 허용됩니다. 인증되지 않은 모든 요청은 다른 임의 AWS 사용자 또는 인증되지 않은 익명 사용자가 수행합니다. 이 사용자는 ACL에서 특정 정식 사용자 ID
65a011a29cdf8ec533ec3d1ccaae921c
로 표시됩니다.WRITE
또는FULL_CONTROL
에 객체를 업로드하면 모든 사용자 그룹 또는 익명 사용자에게 액세스 권한이 명확히 부여됩니다. 퍼블릭 버킷 정책 및 퍼블릭 ACL(액세스 제어 목록)에 대한 자세한 내용은 "퍼블릭"의 의미 섹션을 참조하십시오.
버킷 정책과 ID 기반 정책 모두 20KB의 크기 제한이 있습니다. 액세스 권한 요구 사항이 복잡한 경우 이 크기 제한을 초과할 수 있습니다.
이 사용 사례에는 다음과 같은 액세스 관리 도구를 사용하는 것이 좋습니다.
-
액세스 포인트 - 사용 사례에 맞는 경우 액세스 포인트를 사용하세요. 액세스 포인트의 경우 각 버킷에는 이름이 지정된 네트워크 엔드포인트가 여러 개 있으며, 각 엔드포인트에는 기본 버킷 정책에 맞는 고유한 액세스 포인트 정책이 있습니다. 하지만 액세스 포인트는 객체에서만 작동할 수 있고 버킷에서는 작동할 수 없으며 크로스 리전 복제는 지원하지 않습니다. 자세한 내용은 액세스 포인트로 공유 데이터세트에 대한 액세스 관리 단원을 참조하십시오.
-
S3 Access Grants - 버킷, 접두사 또는 객체에 대한 액세스 권한을 부여하는 매우 많은 권한 부여를 지원하는 S3 Access Grants를 사용하세요. 자세한 내용은 S3 Access Grants 시작하기 단원을 참조하십시오.
AWS Identity and Access Management(IAM)를 통해 사용자, 그룹 및 역할을 관리하는 대신 회사 디렉터리를 AWS IAM Identity Center에 추가할 수 있습니다. 자세한 정보는 What is IAM Identity Center?를 참조하세요.
AWS IAM Identity Center에 회사 디렉터리를 추가한 후에는 다음 액세스 관리 도구를 사용하여 회사 디렉터리 ID에 S3 리소스에 대한 액세스 권한을 부여하는 것이 좋습니다.
-
S3 Access Grants - 회사 디렉터리 내 사용자 또는 역할에 대한 액세스 권한 부여를 지원하는 S3 Access Grants를 사용하세요. 자세한 내용은 S3 Access Grants 시작하기 단원을 참조하십시오.
이 사용 사례에는 다음과 같은 액세스 관리 도구를 사용하는 것이 좋습니다.
-
버킷 ACL - 버킷 ACL이 권장되는 유일한 사용 사례는 Amazon CloudFront
awslogsdelivery
계정과 같은 특정 AWS 서비스에 권한을 부여하는 것입니다. 배포를 생성 또는 업데이트하고 CloudFront 로깅을 활성화하면 CloudFront는 버킷 ACL을 업데이트하여awslogsdelivery
계정에 버킷에 로그를 쓸 수 있는FULL_CONTROL
권한을 부여합니다. 자세한 내용은 Amazon CloudFront 개발자 안내서의 표준 로깅 구성 및 로그 파일 액세스에 필요한 권한을 참조하십시오. 로그를 저장하는 버킷이 S3 객체 소유권에 대해 버킷 소유자 적용 설정을 사용하여 ACL을 비활성화하면 CloudFront에서 버킷에 로그를 쓸 수 없습니다. 자세한 내용은 객체 소유권 제어 및 버킷에 대해 ACL 사용 중지 단원을 참조하십시오.
버킷 정책, 액세스 포인트 또는 S3 Access Grants를 사용하여 버킷에 객체를 업로드할 수 있는 액세스 권한을 다른 계정에 부여할 수 있습니다. 버킷에 대한 크로스 계정 액세스 권한을 부여한 경우 버킷에 업로드된 모든 객체의 완전한 소유권을 버킷 소유자가 갖도록 할 수 있습니다.
이 사용 사례에는 다음과 같은 액세스 관리 도구를 사용하는 것이 좋습니다.
-
객체 소유권 - 버킷 수준 설정인 객체 소유권을 기본값인 버킷 소유자 적용 설정으로 유지합니다.
액세스 관리 문제 해결
다음 리소스는 S3 액세스 관리 문제를 해결하는 데 도움이 될 수 있습니다.
액세스 거부(403 금지) 오류 문제 해결
액세스 거부 문제가 발생하는 경우 계정 수준 및 버킷 수준 설정을 확인하세요. 또한 액세스 권한을 부여하는 데 사용하는 액세스 관리 기능을 확인하여 정책, 설정 또는 구성이 올바른지 확인하세요. Amazon S3의 액세스 거부(403 금지) 오류의 일반적인 원인에 대한 자세한 내용은 Amazon S3의 액세스 거부(403 Forbidden) 오류 문제 해결 섹션을 참조하십시오.
IAM Access Analyzer for S3
리소스를 공개하고 싶지 않거나 리소스에 대한 퍼블릭 액세스를 제한하려는 경우 IAM Access Analyzer for S3를 사용할 수 있습니다. Amazon S3 콘솔에서 IAM Access Analyzer for S3를 사용하여 퍼블릭 또는 공유 액세스 권한을 부여하는 ACL(버킷 액세스 제어 목록), 버킷 정책 또는 액세스 포인트 정책이 있는 모든 버킷을 검토하세요. IAM Access Analyzer for S3는 인터넷상의 모든 사용자 또는 조직 외부의 AWS 계정을 포함한 다른 AWS 계정에 대한 액세스를 허용하도록 구성된 S3 버킷에 대한 알림을 제공합니다. 각 퍼블릭 버킷 또는 공유 버킷에 대해 퍼블릭 액세스 또는 공유 액세스의 수준과 소스를 보고하는 결과가 수신됩니다.
IAM Access Analyzer for S3에서는 하나의 작업으로 버킷에 대한 모든 퍼블릭 액세스를 차단할 수 있습니다. 특정 사용 사례를 지원하기 위해 퍼블릭 액세스가 필요하지 않은 경우 버킷에 대한 모든 퍼블릭 액세스를 차단하는 것이 좋습니다. 모든 퍼블릭 액세스를 차단하기 전에 애플리케이션이 퍼블릭 액세스 없이 계속 올바르게 작동하도록 하세요. 자세한 내용은 Amazon S3 스토리지에 대한 퍼블릭 액세스 차단 단원을 참조하십시오.
또한 버킷 수준 권한 설정을 검토하여 세부적인 액세스 수준을 구성할 수 있습니다. 퍼블릭 액세스 또는 공유 액세스가 필요한 것으로 확인된 특정 사용 사례의 경우, 버킷에 대한 결과를 보관하여 버킷을 퍼블릭 상태로 유지할 것인지 공유 상태로 유지할 것인지 확인하고 기록할 수 있습니다. 언제든지 재방문하여 해당 버킷 구성을 수정할 수 있습니다. 감사 목적으로 결과를 CSV 보고서로 다운로드할 수도 있습니다.
Amazon S3 콘솔에서는 IAM Access Analyzer for S3를 추가 비용 없이 사용할 수 있습니다. IAM Access Analyzer for S3는 AWS Identity and Access Management(IAM) IAM Access Analyzer를 통해 제공됩니다. Amazon S3 콘솔에서 IAM Access Analyzer for S3를 사용하려면 IAM 콘솔
IAM Access Analyzer for S3에 대한 자세한 내용은 IAM Access Analyzer for S3를 사용하여 버킷 액세스 검토 섹션을 참조하십시오.
로깅 및 모니터링
모니터링은 Amazon S3 솔루션의 신뢰성, 가용성 및 성능을 유지하는 데 중요합니다. 이를 통해 액세스 장애가 발생할 경우 보다 쉽게 디버깅할 수 있습니다. 로깅을 통해 사용자가 수신하는 오류와 요청이 언제 어떤 것인지 파악할 수 있습니다. AWS에서는 Amazon S3 리소스를 모니터링하기 위해 다음과 같이 몇 가지 도구를 제공합니다.
-
AWS CloudTrail
-
Amazon S3 액세스 로그
-
AWS Trusted Advisor
-
Amazon CloudWatch
자세한 내용은 Amazon S3의 로깅 및 모니터링 단원을 참조하십시오.