구성 및 보안 참조

Firebase CLI를 사용하면 버전 관리가 가능한 로컬 프로젝트 디렉터리에서 Firebase 프로젝트를 관리할 수 있습니다. 여기에는 프로젝트의 Data Connect 서비스, 이러한 서비스의 커넥터, 각 커넥터의 스키마, 쿼리, 변형 소스와 같은 리소스가 포함됩니다. CLI를 사용하면 Firebase Data Connect 에뮬레이터를 설치하고 운영할 수도 있습니다. CLI는 Firebase 콘솔에서 작업하는 것보다 효율적인 대안입니다.

비공개 미리보기 프로그램용 Firebase CLI 실험 및 Data Connect 관련 CLI 명령어를 설치하는 방법에 관한 안내는 CLI 참조를 참고하세요.

이 참조 가이드에서는 다음을 설명합니다.

  • firebase.json 프로젝트 구성 파일의 Data Connect 관련 항목
  • dataconnect.yamlconnector.yamlData Connect 구성
  • Data Connect를 사용하는 프로젝트에 구성해야 하는 IAM 역할입니다.

Firebase 프로젝트 구성 파일

firebase.json 구성 참조

dataconnect 키를 사용하여 프로젝트에서 하나 이상의 Data Connect 서비스를 구성합니다.

dataconnect: {
   source: string // Path to the directory containing the dataconnect.yaml service file.
}

dataconnect.yaml 구성 참조

dataconnect.yaml 파일은 애플리케이션 스키마 소스, 커넥터 소스, 데이터 소스 연결 정보의 위치에 관한 구성 정보를 저장합니다. 이 파일은 Firebase CLI의 프로젝트 디렉터리 표시자 역할도 합니다.

schemaValidation 키는 배포 중에 스키마가 마이그레이션될 때 실행되는 스키마 검증 수준을 제어합니다. 값을 설정하지 않으면 dataconect:sql:migrate 명령어의 동작은 호환되는 변경사항을 적용하고 엄격한 변경사항을 실행하기 전에 메시지를 표시합니다. 설정하면 다음과 같이 동작합니다.

  • STRICT 모드 애플리케이션 스키마를 배포하려면 데이터베이스 스키마가 애플리케이션 스키마와 정확하게 일치해야 합니다. Data Connect 스키마에서 사용되지 않는 테이블이나 열은 데이터베이스에서 삭제됩니다.
  • COMPATIBLE 모드 애플리케이션 스키마를 배포하려면 데이터베이스 스키마가 애플리케이션 스키마와 호환되어야 합니다. 추가 변경사항은 선택사항으로 간주됩니다. 호환된다는 것은 스키마 이전이 개발자가 작성한 애플리케이션 스키마를 기반으로 한다는 의미입니다. 애플리케이션 스키마에서 사용되지 않는 데이터베이스의 요소는 수정되지 않은 상태로 유지됩니다. 따라서 배포 후 백엔드에 사용되지 않는 스키마, 테이블, 열이 포함될 수 있습니다.

이 파일의 다른 키 값은 아래 주석에 설명되어 있습니다.

# The top-level Firebase Data Connect YAML file.

# The Firebase Data Connect API version to target.
# Optional. Defaults to the latest version.
specVersion: string

# The ID of the Firebase Data Connect service resource.
# Required.
serviceId: string

# The location of the Firebase Data Connect service.
# Required.
location: string

# Required.
schema:
  # Relative path to directory for schema definitions.
  # Recursively loads all .gql files in this directory.
  # Optional. If not present, defaults to ./schema.
  source: string
  # Datasource connection information.
  # Required.
  datasource:
    # Required.
    postgresql:
      # The name of the PostgreSQL database.
      # Required.
      database: string
      cloudSql:
        # The ID of the CloudSQL instance resource.
        # Required.
        instanceId: string
        # Schema validation mode for schema migrations.
        # Defaults to unspecified/commented out, meaning you are prompted to
        # review all changes during migration.
        # If desired, uncomment and indicate one of "STRICT" or "COMPATIBLE".
        schemaValidation: string

# Required.
# Relative paths to directories for connector definitions.
# Recursively loads all .gql files in the listed directories.
# All directories specified MUST contain a connector.yaml file.
connectorDirs: [string]

YAML 파일은 다음과 같은 기본 (구성 가능) 디렉터리 구조를 가정합니다.

./(project root)
   /dataconnect
      dataconnect.yaml
      /schema
        *.gql
      /connector
        connector.yaml
        *.gql

connector.yaml 구성 참조

connector.yaml를 사용하여 기본 인증 모드 및 SDK 생성 옵션을 구성합니다.

# The connector-level YAML file.

# Required. The connector name of the Firebase Data Connect connector resource.
connectorId: string

# Optional. If not specified, no generated libraries (i.e. type-safe SDKs) will be generated.
generate:
    # Optional.
    javascriptSdk:
        # Path to the directory that will be updated with the latest generated
        # web SDK.
        # Required.
      - outputDir: string
        # Path to your package.json directory. If specified, the new generated sdk will be installed in this path.
        # Optional. If not provided, the package will not be auto-installed for you.
      - packageJsonDir: string
        # Name of the package to be created.
        # Optional. Defaults to @firebasegen/<connectorID>
      - package: string
        <option>: string
    # Optional.
    swiftSdk:
        # Path to the directory that will be updated with the latest generated
        # iOS Swift SDK.
        # Required.
      - outputDir: string
        # Name of the package to be created.
      - package: string
        <option>: string
    # Optional.
    kotlinSdk:
        # Path to the directory that will be updated with the latest generated
        # Android SDK.
        # Required.
      - outputDir: string
        # Name of the package to be created.
      - package: string
        <option>: string

Data Connect 프로젝트의 IAM 구성

Data Connect의 세분화된 IAM 역할

Firebase 기본 역할 및 사전 정의된 역할은 하위 수준 Data Connect 역할에 매핑됩니다. 매핑은 표를 참고하세요.

Data Connect의 개별 IAM 역할 할당을 더 세분화된 수준에서 관리하려면 Google Cloud 콘솔을 사용하세요.

IAM 역할 권한
firebasedataconnect.googleapis.com/admin

Firebase Data Connect API 관리자

이 역할에는 Firebase Data Connect API 뷰어가 포함됩니다.
firebasedataconnect.*와 동일합니다.

Cloud 소유자, Cloud 편집자,
Firebase 관리자, Firebase 개발 관리자 역할에서 제공합니다.
데이터를 포함한 Firebase Data Connect API 리소스에 대한 전체 액세스 권한입니다.

firebasedataconnect.googleapis.com/operations.delete
firebasedataconnect.googleapis.com/operations.cancel
firebasedataconnect.googleapis.com/services.create
firebasedataconnect.googleapis.com/services.update
firebasedataconnect.googleapis.com/services.delete
firebasedataconnect.googleapis.com/services.executeGraphql
firebasedataconnect.googleapis.com/services.executeGraphqlRead
firebasedataconnect.googleapis.com/schemas.create
firebasedataconnect.googleapis.com/schemas.update
firebasedataconnect.googleapis.com/schemas.delete
firebasedataconnect.googleapis.com/schemaRevisions.create
firebasedataconnect.googleapis.com/schemaRevisions.delete
firebasedataconnect.googleapis.com/connectors.create
firebasedataconnect.googleapis.com/connectors.update
firebasedataconnect.googleapis.com/connectors.delete
firebasedataconnect.googleapis.com/connectorRevisions.create
firebasedataconnect.googleapis.com/connectorRevisions.delete
firebasedataconnect.googleapis.com/viewer

Firebase Data Connect API 뷰어

Cloud 소유자, Cloud 편집자,
Cloud 뷰어, Firebase 관리자, Firebase 뷰어,
Firebase 개발 관리자, Firebase 개발 뷰어 역할에서 제공합니다.
Firebase Data Connect API 리소스에 대한 읽기 전용 액세스 권한입니다. 이 역할은 데이터에 대한 액세스 권한을 부여하지 않습니다.

cloudresourcemanager.googleapis.com/projects.list
cloudresourcemanager.googleapis.com/projects.get

firebasedataconnect.googleapis.com/operations.list
firebasedataconnect.googleapis.com/operations.get
firebasedataconnect.googleapis.com/locations.list
firebasedataconnect.googleapis.com/locations.get
firebasedataconnect.googleapis.com/services.list
firebasedataconnect.googleapis.com/services.get
firebasedataconnect.googleapis.com/schemas.list
firebasedataconnect.googleapis.com/schemas.get
firebasedataconnect.googleapis.com/schemaRevisions.list
firebasedataconnect.googleapis.com/schemaRevisions.get
firebasedataconnect.googleapis.com/connectors.list
firebasedataconnect.googleapis.com/connectors.get
firebasedataconnect.googleapis.com/connectorRevisions.list
firebasedataconnect.googleapis.com/connectorRevisions.get
firebasedataconnect.googleapis.com/dataAdmin

Firebase Data Connect API 데이터 관리자

Cloud 소유자, Cloud 편집자,
Firebase 관리자, Firebase 개발 관리자 역할에서 제공합니다.
데이터 소스에 대한 전체 읽기 및 쓰기 액세스 권한입니다.

firebasedataconnect.googleapis.com/services.executeGraphql
firebasedataconnect.googleapis.com/services.executeGraphqlRead
firebasedataconnect.googleapis.com/dataViewer

Firebase Data Connect API 데이터 뷰어

Cloud 소유자, Cloud 편집자,
Firebase 관리자, Firebase 개발 관리자 역할에서 제공합니다.
데이터 소스에 대한 읽기 전용 액세스 권한입니다.

firebasedataconnect.googleapis.com/services.executeGraphqlRead