이 페이지에서는 Identity and Access Management(IAM) 역할 및 권한과 Cloud SQL 인스턴스에 이를 사용하는 방법을 설명합니다.
소개
이 페이지는 특히 Cloud SQL과 관련된 IAM 측면을 중점적으로 설명합니다. IAM 및 해당 기능에 대한 자세한 내용은 Identity and Access Management를 참조하세요. 특히 IAM 정책 관리 섹션을 참조하세요. IAM을 사용하면 Google Cloud 프로젝트의 리소스에 액세스할 수 있는 사용자를 제어할 수 있습니다. 리소스에 적용하는 액세스 규칙 조합을 IAM 정책이라 합니다. 프로젝트에 적용된 IAM 정책은 사용자가 프로젝트 내의 모든 리소스에서 수행할 수 있는 작업을 정의합니다.
구성원은 IAM의 '주체'입니다. 개별 사용자, 그룹, 도메인은 물론 일반 대중도 구성원이 될 수 있습니다. 구성원에게는 역할이 할당되어 Google Cloud뿐만 아니라 Cloud SQL에서도 작업을 수행할 수 있는 권한이 부여됩니다. 각 역할은 하나 이상의 권한 모음입니다. 권한은 IAM의 기본 단위입니다. 각 권한을 통해 특정 작업을 수행할 수 있습니다. Cloud SQL에서 사용할 수 있는 모든 역할과 권한의 전체 목록은 Cloud SQL의 IAM 역할 및 Cloud SQL의 IAM 권한을 참조하세요.
계정을 사용하여 Cloud SQL 인스턴스에 연결할 경우 계정에는 Cloud SQL > 클라이언트 역할(roles/cloudsql.client
)이 있어야 하며 이는 연결에 필요한 권한을 포함합니다.
콘솔의 IAM 및 관리자 > IAM 페이지에서 계정에 역할을 추가하고 IAM 및 관리자 > 역할 페이지에서 어떤 권한이 어떤 역할에 속하는지 확인할 수 있습니다.
Cloud SQL은 Cloud SQL과 다른 Google Cloud 제품 간 인증에 서비스 계정을 사용합니다. 서비스 계정은 JSON 형식의 credentials
를 제공합니다. 콘솔에서 이를 다운로드하여 다양한 상황에서 인증에 사용합니다.
Cloud SQL 인증 프록시에 Cloud SQL 역할 및 권한 사용
Cloud SQL 인증 프록시를 사용하여 Compute Engine 인스턴스에서 Cloud SQL 인스턴스에 연결하는 경우 Compute Engine 인스턴스와 연결된 기본 Compute Engine 서비스 계정을 사용할 수 있습니다.
Cloud SQL 인스턴스에 연결하는 다른 모든 계정과 마찬가지로 서비스 계정에는 Cloud SQL > 클라이언트 역할이 있어야 합니다.
서버리스 옵션에 Cloud SQL 역할 및 권한 사용
Google Cloud 서버리스 옵션에는 App Engine, Cloud Run Functions, Cloud Run이 포함됩니다.서비스 계정을 사용하여 다음 옵션을 통한 액세스를 승인합니다. 서비스 계정은 특정 프로젝트의 모든 Cloud SQL에 대한 액세스를 승인합니다. 애플리케이션 또는 Cloud Run Functions를 만들면 이 서비스에서 자동으로 이 계정을 만듭니다. IAM 및 관리 > IAM 페이지에서 계정을 적절한 서픽스와 함께 확인할 수 있습니다.
서버리스 옵션 | 서비스 계정 서픽스 |
---|---|
App Engine | @gae-api-prod.google.com.iam.gserviceaccount.com |
Cloud Run Functions | @appspot.gserviceaccount.com |
Cloud Run | compute@developer.gserviceaccount.com |
Cloud Storage에 Cloud SQL 역할 및 권한 사용
Cloud SQL의 가져오기 및 내보내기 기능은 함께 작동합니다. Cloud Storage로 쓰기를 내보내고 여기에서 읽기를 가져옵니다. 따라서 이러한 작업에 사용하는 서비스 계정에는 Cloud Storage에 대한 읽기 및 쓰기 권한이 모두 필요합니다.
- Cloud Storage에서 데이터를 가져오거나 내보내려면 Cloud SQL 인스턴스의 서비스 계정에 프로젝트에서 설정한
storage.objectAdmin
IAM 역할이 있어야 합니다. 인스턴스의 개요 페이지에 있는 Google Cloud 콘솔에서 인스턴스의 서비스 계정 이름을 확인할 수 있습니다. gcloud storage buckets add-iam-policy-binding
명령어를 사용하여 이 IAM 역할을 버킷의 서비스 계정에 부여할 수 있습니다.- IAM 역할 및 권한 설정에 대한 도움말은 IAM 권한 사용을 참조하세요.
- 자세한 내용은 Cloud Storage의 IAM을 참조하세요.
IAM 그룹 인증으로 Cloud SQL 역할 및 권한 사용
IAM 그룹 인증을 사용하는 경우 그룹을 만듭니다. 그런 다음 이 그룹을 사용하여 Cloud SQL 인스턴스에 대한 액세스 및 데이터베이스 권한을 관리할 수 있습니다.
다음 표에는 IAM 그룹 인증을 관리하는 데 필요한 역할이 나와 있습니다.
작업 | 역할 |
---|---|
그룹을 만들고 보고 관리합니다. |
|
IAM 그룹 멤버십 변경 로그를 봅니다. |
|
프로젝트 수준에서 IAM 권한을 부여하고 보고 설정합니다. |
|
폴더 수준에서 IAM 권한을 부여하고 보고 설정합니다. |
|
관리자는 Cloud SQL 역할을 부여하거나 각 그룹에 개별 Cloud SQL 권한을 부여할 수 있습니다. 각 그룹의 구성원은 역할과 권한을 상속합니다.
Dataplex 통합을 위한 Cloud SQL 역할 및 권한
Dataplex에서 Cloud SQL 메타데이터에 대한 액세스 권한을 제공하려면 사용자에게 roles/cloudsql.schemaViewer
역할을 부여하거나 cloudsql.schemas.view
권한을 커스텀 역할에 추가하면 됩니다.
자세한 내용은 Dataplex 카탈로그로 Cloud SQL 리소스 관리를 참조하세요.
비공개 Cloud SQL 인스턴스 액세스 권한
BigQuery와 같은 다른 Google Cloud 서비스가 데이터에 액세스하고 비공개 연결을 통해 이 데이터에 대해 쿼리를 수행하기 위해 Cloud SQL 인스턴스와 통신해야 하는 경우, 이 서비스는 Virtual Private Cloud(VPC) 내부의 비공개 IP 주소 대신 내부 경로를 사용합니다. VPC 수준 구성, 방화벽 규칙, 경로 정책, 피어링 절단을 사용하여 트래픽을 제어하거나 제한할 수 없습니다.
대신 Cloud SQL은 인스턴스에서 구성 플래그를 제공하여 데이터베이스에 액세스하는 다른 Google Cloud 서비스에 대해 이 내부 경로를 설정 또는 해제할지 여부를 제어할 수 있습니다.
권한 제어 및 취소
BigQuery와 같은 다른 Google Cloud 서비스가 비공개 Cloud SQL 인스턴스에 액세스하려고 시도할 때는 cloudsql.instances.connect
IAM 권한이 있는 합법적인 ID를 제공해야 합니다.
일반적으로 서비스가 이를 달성하는 방법은 두 가지입니다.
- 사용자 인증 정보를 전달합니다. 서비스가 사용자의 IAM ID를 Cloud SQL로 전달하여 인스턴스 액세스 권한을 평가할 수 있습니다. 이 시나리오에서는 Cloud SQL이 성공적으로 연결될 수 있도록 사용자에게 충분한 IAM 권한이 있어야 합니다.
서비스 계정을 사용합니다. BigQuery와 같은 서비스는 사전 구성된 서비스 계정을 사용하여 Cloud SQL 인스턴스에 연결할 수 있습니다. 여기에서는 서비스 계정에 충분한 IAM 권한이 있어야 합니다.
예를 들어 BigQuery와 Cloud SQL 사이의 통합 연결을 위해서는 BigQuery Connection API가 활성화될 때
service-{PROJECT_NUMBER}@gcp-sa-bigqueryconnection.iam.gserviceaccount.com
이라는 서비스 계정이 생성됩니다. 이 서비스 계정에는cloudsql.instances.connect
및cloudsql.instances.get
의 두 가지 Cloud SQL 권한이 있습니다. BigQuery는 이러한 권한을 사용해서 내부 경로를 통해 비공개 Cloud SQL 인스턴스에 액세스합니다.
이 내부 경로를 사용할 수 있는 사람의 권한을 제어하기 위해서는 BigQuery와 같은 Google Cloud 서비스가 Cloud SQL 인스턴스에 연결하기 위해 사용하는 사용자의 IAM ID에 대해 IAM 권한을 부여하거나 취소할 수 있습니다. BigQuery 내에서 권한 부여 및 취소에 대한 자세한 내용은 Cloud SQL에 대한 액세스 설정을 참조하세요.
다른 상황에서 Cloud SQL 역할 및 권한 사용
Cloud SQL은 다른 Google Cloud 제품 및 도구와 상호작용합니다. 이러한 상호작용에도 상황별로 다른 특정 역할과 권한이 필요합니다. Cloud SQL 문서는 아래 각 사례의 요구사항에 대한 자세한 정보를 제공합니다.
- 외부 애플리케이션에서 Cloud SQL에 연결
- 고객 관리 암호화 키(CMEK) 사용
- VPC 서비스 제어를 관리하는 IAM 역할
- Google Kubernetes Engine에서 실행 중인 애플리케이션에서 Cloud SQL 인스턴스에 연결하려면 서비스 계정의 JSON 키 파일에 대한 보안 비밀을 만들어야 합니다.
프로젝트에 IAM 사용
다음 섹션은 프로젝트에서 기본 IAM 작업을 완료하는 방법을 보여줍니다.
다음 작업을 완료하려면 resourcemanager.projects.getIamPolicy
와 resourcemanager.projects.setIamPolicy
IAM 권한이 필요합니다.
프로젝트 수준 정책에 구성원 추가
Cloud SQL과 관련된 역할 목록은 IAM 역할을 참조하세요.
콘솔
- Google Cloud 콘솔에서 IAM 및 관리자 페이지로 이동합니다.
- 상단 표시줄의 프로젝트 드롭다운 메뉴에서 구성원을 추가할 프로젝트를 선택합니다.
- 추가를 클릭합니다. 프로젝트에 구성원, 역할 추가 대화상자가 나타납니다.
- 새 구성원 필드에 액세스 권한을 부여할 항목의 이름을 지정합니다.
- 역할 선택 드롭다운에서 구성원에게 적합한 역할을 부여합니다. Cloud SQL 리소스에 영향을 미치는 역할은 프로젝트 및 Cloud SQL 하위 메뉴에 있습니다.
- 저장을 클릭합니다.
gcloud
프로젝트 수준 IAM 정책을 추가하려면 gcloud beta projects add-iam-policy-binding
을 사용하세요.
프로젝트에 대한 IAM 정책 보기
콘솔
- Google Cloud 콘솔에서 IAM 및 관리자 페이지로 이동합니다.
- 상단 표시줄의 프로젝트 드롭다운 메뉴에서 정책을 보려는 프로젝트를 선택합니다.
- 프로젝트의 권한을 보는 방법에는 2가지가 있습니다.
- 구성원별로 보기: 각 구성원의 역할을 보려면 개별 구성원과 연결된 역할 열을 확인합니다.
- 역할별로 보기: 역할이 있는 회원을 보려면 개별 역할과 연결된 드롭다운을 사용합니다.
gcloud
프로젝트의 IAM 정책을 보려면 gcloud beta projects get-iam-policy
명령어를 사용하세요.
프로젝트 수준 정책에서 구성원 삭제
콘솔
- Google Cloud 콘솔에서 IAM 및 관리자 페이지로 이동합니다.
- 상단 표시줄의 프로젝트 드롭다운 메뉴에서 구성원을 삭제하려는 프로젝트를 선택합니다.
- 구성원별로 권한을 보고 있는지 확인하고 삭제할 구성원을 선택합니다.
- 삭제를 클릭합니다.
- 나타나는 오버레이 창에서 확인을 클릭합니다.
gcloud
프로젝트 수준 IAM 정책을 삭제하려면 gcloud beta projects remove-iam-policy-binding
을 사용하세요.
권장사항
다른 관리 설정과 마찬가지로 IAM을 효과적으로 관리하려면 능동적인 관리가 필요합니다. 다른 사용자가 리소스에 액세스할 수 있도록 하려면 먼저 해당하는 각 사용자에게 어떤 역할을 부여할지 결정합니다. 시간이 지나면서 프로젝트 관리, 사용 패턴, 조직 소유자가 변경되면 프로젝트에 대한 IAM 설정을 수정해야 할 수 있습니다. 특히 대규모 조직 또는 대규모 사용자 그룹에서 Cloud SQL을 관리하는 경우라면 더욱 그렇습니다. 액세스 제어 설정 평가 및 계획 시 다음과 같은 권장사항을 염두에 두어야 합니다.
액세스 권한을 부여할 때 최소 권한 원칙을 사용하세요. 최소 권한의 원칙은 리소스에 대한 액세스 권한을 부여하기 위한 보안 가이드라인입니다. 최소 권한 원칙에 따라 액세스 권한을 부여하면 사용자는 할당된 작업을 수행하는 데 필요한 액세스 권한만 부여받습니다.
모르는 사람에게
setIamPolicy
권한을 부여하지 마세요.setIamPolicy
권한을 부여받은 사용자는 권한을 변경하고 데이터를 제어할 수 있습니다. 객체와 버킷에 대한 관리 제어 권한을 위임할 때만setIamPolicy
권한을 사용해야 합니다.리소스의 관리 권한을 위임하세요. 관리 액세스 권한이 있는 개별 사용자가 그룹에서 탈퇴할 경우 다른 팀 구성원이 리소스를 계속 관리할 수 있는지 확인해야 합니다. 이를 수행하는 두 가지 일반적인 방법은 다음과 같습니다.
- 프로젝트의 Cloud SQL 관리자 역할을 개인이 아닌 그룹에 할당합니다.
- 프로젝트의 Cloud SQL 관리자 역할을 2명 이상의 개별 사용자에게 할당합니다.
다음 단계
- 액세스 제어 자세히 알아보기