VPC 서비스 제어를 사용하면 조직에서 Google Cloud 리소스 주위에 경계를 정의하여 데이터 무단 반출 위험을 완화할 수 있습니다. VPC 서비스 제어를 사용하여 명시적으로 지정한 서비스의 리소스와 데이터를 보호하는 경계를 만듭니다.
번들 Firestore 서비스
다음 API는 VPC 서비스 제어에서 함께 번들로 묶입니다.
firestore.googleapis.com
datastore.googleapis.com
firestorekeyvisualizer.googleapis.com
경계에서 firestore.googleapis.com
서비스를 제한하면 경계가 datastore.googleapis.com
및 firestorekeyvisualizer.googleapis.com
서비스도 제한합니다.
datastore.googleapis.com
서비스 제한
datastore.googleapis.com
서비스는 firestore.googleapis.com
서비스 아래에 번들로 제공됩니다. datastore.googleapis.com
서비스를 제한하려면 다음과 같이 firestore.googleapis.com
서비스를 제한해야 합니다.
- Google Cloud 콘솔을 사용하여 서비스 경계를 만들 때 Firestore를 제한된 서비스로 추가합니다.
-
Google Cloud CLI를 사용하여 서비스 경계를 만들 때
datastore.googleapis.com
대신firestore.googleapis.com
을 사용합니다.--perimeter-restricted-services=firestore.googleapis.com
Datastore용 App Engine 기존 번들 서비스
Datastore의 App Engine 기존 번들 서비스는 서비스 경계를 지원하지 않습니다. 서비스 경계를 사용하여 Datastore 서비스를 보호하면 App Engine 기존 번들 서비스에서 들어오는 트래픽이 차단됩니다. 기존 번들 서비스는 다음과 같습니다.
- App Engine API를 사용한 Java 8 Datastore
- Datastore용 Python 2 NDB 클라이언트 라이브러리
- App Engine API를 사용한 Go 1.11 Datastore
가져오기 및 내보내기 작업에 대한 이그레스 보호
Datastore 모드의 Firestore는 VPC 서비스 제어를 지원하지만 가져오기 및 내보내기 작업에 대한 완전한 이그레스 보호를 받으려면 추가 구성이 필요합니다. 기본 App Engine 서비스 계정을 사용하는 대신 Firestore 서비스 에이전트를 사용하여 가져오기 및 내보내기 작업을 승인해야 합니다. 다음 안내에 따라 가져오기 및 내보내기 작업을 위한 승인 계정을 확인하고 구성합니다.
Firestore 서비스 에이전트
Firestore는 App Engine 서비스 계정을 사용하는 대신 Firestore 서비스 에이전트를 사용하여 가져오기 및 내보내기 작업을 승인합니다. 서비스 에이전트와 서비스 계정은 다음 이름 지정 규칙을 사용합니다.
- Firestore 서비스 에이전트
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
Firestore는 이전에 Firestore 서비스 에이전트 대신 App Engine 기본 서비스 계정을 사용했습니다. 데이터베이스에서 여전히 App Engine 서비스 계정을 사용하여 데이터를 가져오거나 내보내는 경우 이 섹션의 안내에 따라 Firestore 서비스 에이전트를 사용하도록 마이그레이션하는 것이 좋습니다.
- App Engine 서비스 계정
PROJECT_ID@appspot.gserviceaccount.com
Firestore 서비스 에이전트는 Firestore에 국한되므로 더 좋습니다. App Engine 서비스 계정은 서비스 두 개 이상에서 공유됩니다.
승인 계정 보기
Google Cloud 콘솔의 가져오기/내보내기 페이지에서 가져오기 및 내보내기 작업이 요청을 승인하는 데 사용하는 계정을 볼 수 있습니다. 데이터베이스에서 이미 Firestore 서비스 에이전트를 사용 중인지도 확인할 수 있습니다.
-
Google Cloud 콘솔에서 데이터베이스 페이지로 이동합니다.
- 데이터베이스 목록에서 필요한 데이터베이스를 선택합니다.
-
탐색 메뉴에서 가져오기/내보내기를 클릭합니다.
- 가져오기/내보내기 작업 실행 계정 라벨 옆에 있는 승인 계정을 확인합니다.
프로젝트에서 Firestore 서비스 에이전트를 사용하지 않는 경우 다음 기법 중 하나를 사용하여 Firestore 서비스 에이전트로 마이그레이션할 수 있습니다.
- Cloud Storage 버킷 권한을 확인 및 업데이트하여 프로젝트를 마이그레이션합니다(권장).
- 조직 내의 모든 프로젝트에 영향을 미치는 조직 전체 정책 제약조건을 추가합니다.
이러한 기법 중 첫 번째 기법은 영향의 범위를 단일 Datastore 모드 프로젝트로 국소화하므로 더 좋습니다. 두 번째 기법은 기존 Cloud Storage 버킷 권한을 마이그레이션하지 않으므로 선호되지 않습니다. 하지만 조직 수준의 보안 규정 준수를 제공합니다.
Cloud Storage 버킷 권한을 확인하고 업데이트하여 마이그레이션
마이그레이션 프로세스는 두 단계로 구성됩니다.
- Cloud Storage 버킷 권한을 업데이트합니다. 자세한 내용은 다음 섹션을 참조하세요.
- Firestore 서비스 에이전트로 마이그레이션을 확인합니다.
서비스 에이전트 버킷 권한
다른 프로젝트의 Cloud Storage 버킷을 사용하는 내보내기 또는 가져오기 작업의 경우 해당 버킷에 대한 Firestore 서비스 에이전트 권한을 부여해야 합니다. 예를 들어 데이터를 다른 프로젝트로 이동하는 작업은 해당 프로젝트의 버킷에 액세스해야 합니다. 그렇지 않으면 Firestore 서비스 에이전트로 마이그레이션한 후에 이 작업이 실패합니다.
같은 프로젝트 내에 있는 가져오기 및 내보내기 워크플로에서는 권한을 변경할 필요가 없습니다. Firestore 서비스 에이전트는 기본적으로 같은 프로젝트의 버킷에 액세스할 수 있습니다.
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
서비스 에이전트에 대한 액세스 권한을 부여하려면 다른 프로젝트에서 Cloud Storage 버킷 권한을 업데이트합니다. 서비스 에이전트에 Firestore Service Agent
역할을 부여합니다.
Firestore Service Agent
역할은 Cloud Storage 버킷에 대한 읽기 및 쓰기 권한을 부여합니다. 읽기 권한만 또는 쓰기 권한만 부여해야 하는 경우 커스텀 역할을 사용합니다.
다음 섹션에 설명된 마이그레이션 프로세스는 권한 업데이트가 필요할 수 있는 Cloud Storage 버킷을 식별하는 데 도움이 됩니다.
Firestore 서비스 에이전트로 프로젝트 마이그레이션
App Engine 서비스 계정에서 Firestore 서비스 에이전트로 마이그레이션하려면 다음 단계를 완료합니다. 완료하면 마이그레이션을 취소할 수 없습니다.
-
Google Cloud 콘솔에서 데이터베이스 페이지로 이동합니다.
- 데이터베이스 목록에서 필요한 데이터베이스를 선택합니다.
-
탐색 메뉴에서 가져오기/내보내기를 클릭합니다.
-
프로젝트가 아직 Firestore 서비스 에이전트로 마이그레이션되지 않은 경우 마이그레이션을 설명하는 배너와 버킷 상태 확인 버튼이 표시됩니다. 다음 단계는 잠재적 권한 오류를 식별하고 수정하는 데 도움이 됩니다.
버킷 상태 확인을 클릭합니다.
마이그레이션을 완료하는 옵션과 Cloud Storage 버킷 목록이 있는 메뉴가 나타납니다. 목록 로드가 완료되는 데 몇 분 정도 걸릴 수 있습니다.
이 목록에는 최근에 가져오기 및 내보내기 작업에 사용되었지만 현재 Firestore 서비스 에이전트에 읽기 및 쓰기 권한이 부여되지 않은 버킷이 포함됩니다.
- 프로젝트의 Datastore 모드 서비스 에이전트의 주 구성원 이름을 기록해 둡니다. 서비스 에이전트 이름이 액세스 권한을 부여할 서비스 에이전트 라벨 아래에 나타납니다.
-
나중에 가져오기 또는 내보내기 작업에 사용할 목록의 버킷에 다음 단계를 완료합니다.
-
이 버킷의 테이블 행에서 수정을 클릭합니다. 그러면 새 탭에 버킷의 권한 페이지가 열립니다.
- 추가를 클릭합니다.
- 새 주 구성원 필드에 Firestore 서비스 에이전트 이름을 입력합니다.
- 역할 선택 필드에서 서비스 에이전트 > Firestore 서비스 에이전트를 선택합니다.
- 저장을 클릭합니다.
- Datastore 모드 가져오기/내보내기 페이지가 있는 탭으로 돌아갑니다.
- 목록의 다른 버킷에 이 단계를 반복합니다. 목록의 모든 페이지를 확인해야 합니다.
-
-
Firestore 서비스 에이전트로 마이그레이션을 클릭합니다. 권한 확인에 실패한 버킷이 아직 있으면 마이그레이션을 클릭하여 마이그레이션을 확인해야 합니다.
마이그레이션이 완료되면 알림이 표시됩니다. 마이그레이션을 취소할 수 없습니다.
마이그레이션 상태 보기
프로젝트의 마이그레이션 상태를 확인하려면 다음 안내를 따르세요.
-
Google Cloud 콘솔에서 데이터베이스 페이지로 이동합니다.
- 데이터베이스 목록에서 필요한 데이터베이스를 선택합니다.
-
탐색 메뉴에서 가져오기/내보내기를 클릭합니다.
-
가져오기/내보내기 작업 실행 주 구성원 라벨 옆에 있는 주 구성원을 찾습니다.
주 구성원이
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
이면 프로젝트가 이미 Firestore 서비스 에이전트로 마이그레이션된 것입니다. 마이그레이션을 취소할 수 없습니다.프로젝트가 마이그레이션되지 않으면 버킷 상태 확인 버튼이 있는 페이지 상단에 배너가 표시됩니다. 마이그레이션을 완료하려면 Firestore 서비스 에이전트로 마이그레이션을 참조하세요.
조직 전체 정책 제약조건 추가
-
조직 정책에 다음 제약조건을 설정합니다.
가져오기/내보내기에 Firestore 서비스 에이전트가 필요합니다(
firestore.requireP4SAforImportExport
).이 제약조건을 사용하려면 Firestore 서비스 에이전트를 사용하여 요청을 승인하는 가져오기 및 내보내기 작업이 필요합니다. 이 제약조건을 설정하려면 조직 정책 만들기 및 관리를 확인하세요.
이 조직 정책 제약조건을 적용해도 Firestore 서비스 에이전트에 적절한 Cloud Storage 버킷 권한이 자동으로 부여되지 않습니다.
제약조건이 가져오기 또는 내보내기 워크플로에 대한 권한 오류를 만드는 경우 중지하여 기본 서비스 계정을 다시 사용할 수 있습니다. Cloud Storage 버킷 권한을 확인 및 업데이트하면 제약조건을 다시 사용 설정할 수 있습니다.