Google Cloud에서는 ID 및 액세스 관리(IAM)를 제공하므로 특정 Google Cloud 리소스에 더욱 세분화된 액세스 권한을 부여하고 다른 리소스에 대한 무단 액세스를 방지할 수 있습니다. 이 페이지에서는 Datastore 모드의 Firestore IAM 역할을 설명합니다. IAM에 대한 자세한 내용은 IAM 문서를 참조하세요.
IAM을 통해 보안의 최소 권한 원칙을 적용하여 필요한 액세스 권한만 리소스에 부여할 수 있습니다.
IAM을 사용하면 IAM 정책을 설정하여 누구(사용자)에게 어떤 리소스에 대한 무슨 (역할) 권한을 부여할지 제어할 수 있습니다. IAM 정책은 사용자에게 구체적인 역할을 부여하여 특정 권한을 줍니다. 예를 들어 사용자에게 datastore.indexAdmin
역할을 부여하면 이 사용자는 색인을 생성, 수정, 삭제, 나열하거나 볼 수 있습니다.
권한 및 역할
이 섹션에서는 Datastore 모드의 Firestore가 지원하는 권한과 역할을 요약합니다.
권한
다음 표에는 Datastore 모드의 Firestore가 지원하는 권한이 나와 있습니다.
데이터베이스 권한 이름 | 설명 | |
---|---|---|
datastore.databases.export |
데이터베이스의 항목을 내보냅니다. | |
datastore.databases.get |
트랜잭션을 시작하거나 롤백합니다. 비어 있는 변형으로 커밋합니다. |
|
datastore.databases.import |
항목을 데이터베이스로 가져옵니다. | |
datastore.databases.getMetadata |
데이터베이스에서 메타데이터를 읽습니다. | |
datastore.databases.list |
프로젝트의 데이터베이스를 나열합니다. | |
datastore.databases.create |
데이터베이스를 만듭니다. | |
datastore.databases.update |
데이터베이스를 업데이트합니다. | |
datastore.databases.delete |
데이터베이스를 삭제합니다. | |
datastore.databases.createTagBinding |
데이터베이스의 태그 바인딩을 만듭니다. | |
datastore.databases.deleteTagBinding |
데이터베이스의 태그 바인딩을 삭제합니다. | |
datastore.databases.listTagBindings |
데이터베이스의 모든 태그 바인딩을 나열합니다. | |
datastore.databases.listEffectiveTagBindings |
데이터베이스의 유효한 태그 바인딩을 나열합니다. | |
항목 권한 이름 | 설명 | |
datastore.entities.allocateIds |
불완전한 키 경로가 있는 키에 ID를 할당합니다. | |
datastore.entities.create |
항목을 생성합니다. | |
datastore.entities.delete |
항목을 삭제합니다. | |
datastore.entities.get |
항목을 읽습니다. | |
datastore.entities.list |
프로젝트의 항목 키를 나열합니다. (항목 데이터에 액세스하려면 datastore.entities.get 이 필요합니다.) |
|
datastore.entities.update |
항목을 업데이트합니다. | |
색인 권한 이름 | 설명 | |
datastore.indexes.create |
색인을 만듭니다. | |
datastore.indexes.delete |
색인을 삭제합니다. | |
datastore.indexes.get |
색인에서 메타데이터를 읽습니다. | |
datastore.indexes.list |
프로젝트의 색인을 나열합니다. | |
datastore.indexes.update |
색인을 업데이트합니다. | |
네임스페이스 권한 이름 | 설명 | |
datastore.namespaces.get |
네임스페이스에서 메타데이터를 검색합니다. | |
datastore.namespaces.list |
프로젝트의 네임스페이스를 나열합니다. | |
작업 권한 이름 | 설명 | |
datastore.operations.cancel |
장기 실행 작업을 취소합니다. | |
datastore.operations.delete |
장기 실행 작업을 삭제합니다. | |
datastore.operations.get |
장기 실행 작업의 최신 상태를 가져옵니다. | |
datastore.operations.list |
장기 실행 작업을 나열합니다. | |
프로젝트 권한 이름 | 설명 | |
resourcemanager.projects.get |
프로젝트의 리소스를 찾아봅니다. | |
resourcemanager.projects.list |
소유한 프로젝트를 나열합니다. | |
통계 권한 이름 | 설명 | |
datastore.statistics.get |
통계 항목을 검색합니다. | |
datastore.statistics.list |
통계 항목의 키를 나열합니다. (통계 항목 데이터에 액세스하려면 datastore.statistics.get 이 필요합니다.) |
|
App Engine 권한 이름 | 설명 | |
appengine.applications.get |
모든 App Engine 애플리케이션 구성 및 설정에 읽기 전용으로 액세스합니다. | |
위치 권한 이름 | 설명 | |
datastore.locations.get |
데이터베이스 위치에 대한 세부정보를 가져옵니다. 새 데이터베이스를 만드는 데 필요합니다. | |
datastore.locations.list |
사용 가능한 데이터베이스 위치를 나열합니다. 새 데이터베이스를 만드는 데 필요합니다. | |
Key Visualizer 권한 이름 | 설명 | |
datastore.keyVisualizerScans.get |
Key Visualizer 스캔에 대한 세부정보를 가져옵니다. | |
datastore.keyVisualizerScans.list |
사용 가능한 Key Visualizer 스캔을 나열합니다. | |
백업 일정 권한 이름 | 설명 | |
datastore.backupSchedules.get |
백업 일정에 대한 세부정보를 가져옵니다. | |
datastore.backupSchedules.list |
사용 가능한 백업 일정을 나열합니다. | |
datastore.backupSchedules.create |
백업 일정을 만듭니다. | |
datastore.backupSchedules.update |
백업 일정을 업데이트합니다. | |
datastore.backupSchedules.delete |
백업 일정을 삭제합니다. | |
백업 권한 이름 | 설명 | |
datastore.backups.get |
백업에 대한 세부정보를 가져옵니다. | |
datastore.backups.list |
사용 가능한 백업을 나열합니다. | |
datastore.backups.delete |
백업을 삭제합니다. | |
datastore.backups.restoreDatabase |
백업에서 데이터베이스를 복원합니다. |
사전 정의된 역할
IAM에서 모든 Datastore API 메서드에는 API 요청을 하는 계정에 리소스를 사용할 수 있는 적절한 권한이 필요합니다. 권한을 부여하려면 사용자, 그룹 또는 서비스 계정에 역할을 부여하는 정책을 설정합니다. 기본 역할인 소유자, 편집자, 뷰어 이외에 프로젝트 사용자에게 Datastore 모드의 Firestore 역할을 부여할 수 있습니다.
다음 표에는 Datastore 모드의 Firestore IAM 역할이 나와 있습니다. 사용자, 그룹 또는 서비스 계정에 여러 역할을 부여할 수 있습니다.
역할 | 권한 | 설명 |
---|---|---|
roles/datastore.owner |
appengine.applications.get datastore.* resourcemanager.projects.get resourcemanager.projects.list |
데이터베이스 인스턴스에 대한 전체 액세스 권한입니다. Datastore 관리자 액세스 권한의 경우 주 구성원에게 appengine.appAdmin 역할을 부여합니다. |
roles/datastore.user |
appengine.applications.get datastore.databases.get datastore.databases.getMetadata datastore.databases.list datastore.entities.* datastore.indexes.list datastore.namespaces.get datastore.namespaces.list datastore.statistics.get datastore.statistics.list resourcemanager.projects.get resourcemanager.projects.list |
Datastore 모드 데이터베이스의 데이터에 대한 읽기/쓰기 액세스 권한입니다. 애플리케이션 개발자 및 서비스 계정용입니다. |
roles/datastore.viewer |
appengine.applications.get datastore.databases.get datastore.databases.getMetadata datastore.databases.list datastore.entities.get datastore.entities.list datastore.indexes.get datastore.indexes.list datastore.namespaces.get datastore.namespaces.list datastore.statistics.get datastore.statistics.list resourcemanager.projects.get resourcemanager.projects.list |
모든 Datastore 모드 데이터베이스 리소스에 대한 읽기 액세스 권한입니다. |
roles/datastore.importExportAdmin |
appengine.applications.get datastore.databases.export datastore.databases.getMetadata datastore.databases.import datastore.operations.cancel datastore.operations.get datastore.operations.list resourcemanager.projects.get resourcemanager.projects.list |
가져오기 및 내보내기를 관리할 수 있는 전체 액세스 권한입니다. |
roles/datastore.indexAdmin |
appengine.applications.get datastore.databases.getMetadata datastore.indexes.* resourcemanager.projects.get resourcemanager.projects.list |
색인 정의를 관리할 수 있는 전체 액세스 권한입니다. |
roles/datastore.keyVisualizerViewer |
datastore.databases.getMetadata datastore.keyVisualizerScans.get datastore.keyVisualizerScans.list resourcemanager.projects.get resourcemanager.projects.list |
Key Visualizer 스캔에 대한 전체 액세스 권한입니다. |
roles/datastore.backupSchedulesViewer |
datastore.backupSchedules.get datastore.backupSchedules.list |
Datastore 모드 데이터베이스의 백업 일정에 대한 읽기 액세스 권한입니다. |
roles/datastore.backupSchedulesAdmin |
datastore.backupSchedules.get datastore.backupSchedules.list datastore.backupSchedules.create datastore.backupSchedules.update datastore.backupSchedules.delete datastore.databases.list datastore.databases.getMetadata |
Datastore 모드 데이터베이스의 백업 일정에 대한 전체 액세스 권한입니다. |
roles/datastore.backupsViewer |
datastore.backups.get datastore.backups.list |
Datastore 모드 위치의 백업 정보에 대한 읽기 액세스 권한입니다. |
roles/datastore.backupsAdmin |
datastore.backups.get datastore.backups.list datastore.backups.delete |
Datastore 모드 위치의 백업에 대한 전체 액세스 권한입니다. |
roles/datastore.restoreAdmin |
datastore.backups.get datastore.backups.list datastore.backups.restoreDatabase datastore.databases.list datastore.databases.create datastore.databases.getMetadata datastore.operations.list datastore.operations.get |
Datastore 모드 백업을 새 데이터베이스로 복원하는 기능입니다. 이 역할은 백업에서 복원할 필요 없이 새 데이터베이스를 만들 수 있는 기능도 제공합니다. |
커스텀 역할
사전 정의된 역할로 비즈니스 요구 사항이 해결되지 않는 경우, 권한을 지정하여 자신만의 커스텀 역할을 정의할 수 있습니다.
API 메서드에 필요한 권한
다음 표에서는 호출자가 각 메소드를 호출하는 데 필요한 권한 목록을 보여줍니다.
메서드 | 필수 권한 |
---|---|
allocateIds |
datastore.entities.allocateIds |
beginTransaction |
datastore.databases.get |
변형이 비어 있는 commit |
datastore.databases.get |
삽입 commit |
datastore.entities.create |
upsert commit |
datastore.entities.create datastore.entities.update |
업데이트 commit |
datastore.entities.update |
삭제 commit |
datastore.entities.delete |
조회 commit |
datastore.entities.get 메타데이터 또는 통계와 관련된 조회는 메타데이터 및 통계에 필요한 권한을 참조하세요. |
쿼리 commit |
datastore.entities.list datastore.entities.get (쿼리가 키 전용 쿼리가 아닌 경우)메타데이터 또는 통계와 관련된 쿼리는 메타데이터 및 통계에 필요한 권한을 참조하세요. |
lookup |
datastore.entities.get 메타데이터 또는 통계와 관련된 조회는 메타데이터 및 통계에 필요한 권한을 참조하세요. |
rollback |
datastore.databases.get |
runQuery |
datastore.entities.list datastore.entities.get (쿼리가 키 전용 쿼리가 아닌 경우)메타데이터 또는 통계와 관련된 쿼리는 메타데이터 및 통계에 필요한 권한을 참조하세요. |
비구분 쿼리가 있는 runQuery |
datastore.entities.get datastore.entities.list datastore.statistics.get datastore.statistics.list |
메타데이터 및 통계에 필요한 권한
다음 표에는 호출자가 메타데이터 및 통계 메서드를 호출하는 데 필요한 권한이 나와 있습니다.
메서드 | 필수 권한 |
---|---|
종류 이름이 __Stat_*__과 일치하는 항목의 lookup |
datastore.statistics.get |
이름이 __Stat_*__과 일치하는 종류를 사용하는 runQuery |
datastore.statistics.get datastore.statistics.list |
__namespace__ 종류를 사용하는 runQuery |
datastore.namespaces.get datastore.namespaces.list |
Datastore 모드 데이터베이스 인스턴스를 만드는 데 필요한 역할
새 Datastore 모드 데이터베이스 인스턴스를 만들려면 소유자 역할 또는 Datastore 소유자 역할이 필요합니다.
Datastore 모드 데이터베이스에는 활성 App Engine 애플리케이션이 필요합니다.
프로젝트에 애플리케이션이 없으면 Datastore 모드의 Firestore가 자동으로 애플리케이션을 만듭니다. 이 경우 소유자 역할 또는 IAM 커스텀 역할에 포함된 appengine.applications.create
역할이 필요합니다.
역할 변경 지연 시간
Datastore 모드의 Firestore는 5분간 IAM 권한을 캐시하므로 역할 변경이 적용되기까지 최대 5분이 걸립니다.
IAM 관리
Google Cloud Console, IAM 메서드 또는 Google Cloud CLI를 사용하여 IAM 정책을 가져오고 설정할 수 있습니다.
- Google Cloud Console의 경우 Google Cloud Console을 통한 액세스 제어를 참조하세요.
- IAM 메서드의 경우 API를 통한 액세스 제어를 참조하세요.
- gcloud CLI의 경우 gcloud 도구를 통한 액세스 제어를 참조하세요.
조건부 액세스 권한 구성
IAM 조건을 사용하면 조건부 액세스 제어를 정의하고 적용할 수 있습니다.
예를 들어 다음 조건은 지정된 날짜까지 주 구성원에게 datastore.user
역할을 할당합니다.
{
"role": "roles/datastore.user",
"members": [
"user:travis@example.com"
],
"condition": {
"title": "Expires_December_1_2023",
"description": "Expires on December 1, 2023",
"expression":
"request.time < timestamp('2023-12-01T00:00:00.000Z')"
}
}
임시 액세스를 위한 IAM 조건을 정의하는 방법은 임시 액세스 구성을 참조하세요.
하나 이상의 데이터베이스에 액세스하기 위해 IAM 조건을 구성하는 방법을 알아보려면 데이터베이스 액세스 조건 구성을 참조하세요.