Cloud Storage 버킷과 객체에 액세스할 수 있는 사용자와 해당 사용자의 액세스 수준을 제어할 수 있습니다.
균일한 액세스와 세분화된 액세스 중에서 선택
버킷을 생성할 때는 권한을 적용함에 있어 균일한 액세스를 사용할지 아니면 세분화된 액세스를 사용할지를 결정해야 합니다.
균일한 액세스 제어(권장): 균일한 버킷 수준 액세스를 사용하면 Identity and Access Management(IAM)만 사용하여 권한을 관리할 수 있습니다. IAM은 일반 이름 프리픽스가 있는 객체 그룹 또는 버킷에 포함된 모든 객체에 권한을 적용합니다. 또한 IAM은 ACL 작업 시 제공되지 않는 관리되는 폴더, IAM 조건, 도메인 제한 공유, 근무자 ID 제휴 등의 기능을 제공합니다.
세분화된 액세스 제어: 세분화된 옵션을 사용하면 IAM과 액세스 제어 목록(ACL)을 함께 사용하여 권한을 관리할 수 있습니다. ACL은 Amazon S3와의 상호 운용성을 위해 설계된 Cloud Storage의 기존 액세스 제어 시스템입니다. 또한 ACL을 사용하면 객체별로 액세스를 지정할 수 있습니다.
세분화된 액세스를 사용하려면 서로 다른 두 액세스 제어 시스템 간에 조정이 필요하므로 의도하지 않은 데이터 노출이 발생할 가능성이 높아지고 리소스에 액세스할 수 있는 사용자를 감사하는 과정이 복잡해집니다. 특히 개인 식별 정보와 같이 민감한 정보가 포함된 객체가 있는 경우 균일한 버킷 수준 액세스가 사용 설정된 버킷에 데이터를 저장하는 것이 좋습니다.
ACL에 IAM 권한 사용
Cloud Storage는 버킷과 객체에 액세스할 수 있는 권한을 사용자에게 부여하는 데 사용되는 두 시스템, IAM과 액세스제어 목록(ACL)을 제공합니다. 이러한 시스템은 동시에 작동합니다. 사용자가 Cloud Storage 리소스에 액세스할 수 있게 하려면 이러한 시스템 중 하나만 사용자에게 권한을 부여해야 합니다. 예를 들어 버킷의 IAM 정책이 일부 사용자만 버킷의 객체 데이터를 읽을 수 있도록 허용하지만 버킷의 객체 중 하나에 공개적으로 읽을 수 있는 ACL이 있는 경우 해당 특정 객체는 공개적으로 노출됩니다.
대부분의 경우 IAM은 리소스에 대한 액세스를 제어하는 데 권장되는 방법입니다. IAM은 Google Cloud에서 권한을 제어하며 버킷 및 프로젝트 수준에서 권한을 부여할 수 있습니다. 의도하지 않은 유출 위험을 줄이기 위해 버킷의 여러 객체에 적용되는 권한에 IAM을 사용해야 합니다. IAM을 단독으로 사용하려면 균일한 버킷 수준 액세스를 사용하여 모든 Cloud Storage 리소스에서 ACL을 사용할 수 없도록 합니다.
ACL은 Cloud Storage 리소스에 대한 권한만 제어하며 한정적인 권한 옵션을 갖지만, 개별 객체당 권한을 부여할 수 있습니다. 다음 사용 사례에 ACL을 사용하는 것이 좋습니다.
- 버킷 내의 개별 객체에 대한 액세스를 맞춤설정합니다.
- Amazon S3에서 데이터를 마이그레이션합니다.
추가 액세스 제어 옵션
IAM 및 ACL 외에도 다음 도구를 사용하여 리소스에 대한 액세스를 제어할 수 있습니다.
서명된 URL(쿼리 문자열 인증)
서명된 URL을 사용하여 생성한 URL을 통해 객체에 대한 일회성 읽기 또는 쓰기 액세스 권한을 부여합니다. 사용자가 URL을 공유하는 사람은 누구나 사용자 계정이 있는지 여부에 관계없이 사용자가 지정하는 시간 동안 객체에 액세스할 수 있습니다.
IAM 및 ACL 외에도 서명된 URL을 사용할 수 있습니다. 예를 들어 IAM을 사용하여 일부 사용자에 대한 버킷 액세스 권한을 부여한 다음 다른 사용자가 버킷 내의 특정 리소스에 액세스할 수 있도록 허용하는 서명된 URL을 생성할 수 있습니다.
다음을 사용하여 서명된 URL을 만드는 방법에 대해 알아보세요.
서명된 정책 문서
서명된 정책 문서를 사용하여 버킷에 업로드할 수 있는 항목을 지정합니다. 정책 문서를 통해 크기, 콘텐츠 유형, 서명된 URL 이외의 기타 업로드 문자를 더 세부적으로 제어할 수 있습니다. 또한 웹사이트 소유자는 정책 문서를 사용하여 방문자가 Cloud Storage에 파일을 업로드하도록 허용할 수 있습니다.
IAM 및 ACL 외에도 서명된 정책 문서를 사용할 수 있습니다. 예를 들어 IAM을 사용하여 조직의 사용자가 객체를 업로드한 다음 웹사이트 방문자가 특정 기준을 충족하는 객체만 업로드할 수 있도록 허용하는 서명된 정책 문서를 만들 수 있습니다.
Firebase 보안 규칙
Firebase 보안 규칙을 사용하여 Cloud Storage용 Firebase SDK를 사용하는 모바일 앱 및 웹 앱에 세부적인 속성 기반 액세스 제어를 제공합니다. 예를 들어, 객체를 업로드 또는 다운로드할 수 있는 사용자, 객체의 최대 크기, 객체를 다운로드할 수 있는 시기를 지정할 수 있습니다.
공개 액세스 방지
공개 액세스 방지를 사용하여 버킷과 객체에 대한 공개 액세스를 제한합니다. 공개 액세스 방지를 사용 설정하면 allUsers
및 allAuthenticatedUsers
를 통해 액세스 권한이 부여된 사용자는 데이터에 액세스할 수 없습니다.
사용자 인증 정보 액세스 경계
사용자 인증 정보 액세스 경계를 사용하여 OAuth 2.0 액세스 토큰에서 사용할 수 있는 권한을 축소합니다. 먼저 토큰에서 액세스할 수 있는 버킷과 해당 버킷에서 사용할 수 있는 권한의 상한을 지정하는 사용자 인증 정보 액세스 경계를 정의합니다. 그런 다음 OAuth 2.0 액세스 토큰을 생성하고 이를 사용자 인증 정보 액세스 경계를 준수하는 새 액세스 토큰으로 교환할 수 있습니다.
버킷 IP 필터링
버킷 IP 필터링을 사용하여 요청의 소스 IP 주소를 기준으로 버킷에 대한 액세스를 제한합니다. 버킷 IP 필터링은 승인되지 않은 네트워크가 버킷 및 데이터에 액세스하지 못하도록 하여 보안 레이어를 추가합니다. 공개 IP 주소, 공개 IP 주소 범위, 가상 프라이빗 클라우드 내 IP 주소를 포함하여 허용되는 IP 주소 범위 목록을 구성할 수 있습니다. 목록에 없는 IP 주소에서 발생한 요청은 차단됩니다. 따라서 승인된 사용자만 버킷에 액세스할 수 있습니다.
다음 단계
- IAM 권한 사용 방법 알아보기
- Cloud Storage와 관련된 IAM 권한 및 역할 참조
- 버킷 및 객체 ACL 설정 관련 공유 및 공동작업 시나리오 예시 확인
- 공개 인터넷상의 모든 사용자가 내 데이터에 액세스할 수 있도록 하는 방법 알아보기
- 서명된 URL을 사용하는 경우에 대해 자세히 알아보세요.