다음을 통해 공유


자습서: 새 사용자에게 프로젝트 및 데이터베이스 액세스 권한 부여

중요합니다

Lakebase 자동 크기 조정은 다음 지역의 베타에 있습니다. eastus2westeuropewestus

Lakebase 자동 크기 조정은 자동 크기 조정 컴퓨팅, 0으로 크기 조정, 분기 및 즉시 복원이 포함된 최신 버전의 Lakebase입니다. Lakebase 프로비저닝된 기능 비교는 버전 중에서 선택하는 것을 참조하세요.

Lakebase 프로젝트 및 데이터베이스에 액세스할 수 있는 새 사용자를 설정하는 방법을 알아봅니다. 이 자습서에서는 프로젝트 수준 권한(Lakebase 리소스 관리용) 및 데이터베이스 수준 권한(Postgres를 통해 데이터에 액세스하기 위한)을 모두 다룹니다.

두 권한 시스템 정보

Lakebase Postgres는 두 가지 권한 계층을 사용합니다.

  1. ACL(프로젝트 권한): 분기 만들기, 컴퓨팅 관리 및 프로젝트 설정 관리와 같은 플랫폼 수준 작업을 제어합니다. 이러한 항목은 Lakebase 앱을 통해 관리됩니다.

  2. Postgres 역할 권한: 데이터베이스 자체 내에서 데이터에 대한 액세스를 제어합니다. 이들은 표준 Postgres GRANT 명령을 통해 관리됩니다.

이러한 시스템에는 자동 동기화가 없습니다. 조직의 요구 사항에 따라 이러한 권한을 독립적으로 또는 함께 부여할 수 있습니다.

  • 플랫폼 액세스 및 데이터베이스 액세스가 필요한 사용자에게 두 계층을 모두 부여합니다.
  • 인프라를 관리하지만 데이터를 쿼리할 필요가 없는 사용자에게 프로젝트 권한만 부여합니다.
  • 데이터를 쿼리해야 하지만 Lakebase 리소스를 관리할 필요가 없는 사용자에게 데이터베이스 액세스 권한만 부여합니다(연결 세부 정보와 같은 psql 도구를 사용하여 연결할 수 있습니다).

이 자습서에서는 두 액세스 계층을 모두 설정하는 방법을 보여 줍니다.

  • 사용자가 Lakebase 플랫폼 리소스를 사용할 수 있도록 프로젝트 권한 부여(이 자습서에서는 모든 액세스에 CAN MANAGE를 사용하고 보기 및 사용 전용 액세스에 대해 CAN USE를 부여할 수도 있습니다).
  • 데이터베이스에 연결하고 쿼리하기 위한 적절한 데이터베이스 권한으로 Postgres 역할 만들기

기본 권한

모든 작업 영역 사용자는 기본적으로 프로젝트를 보고 만들 수 있는 CAN CREATE 권한을 상속합니다. 프로젝트의 리소스 및 데이터베이스에 대한 추가 액세스 권한을 부여하려면 CAN USE 또는 CAN MANAGE를 명시적으로 할당해야 합니다.

필수 조건

  • 데이터베이스가 있는 Lakebase 프로젝트
  • 작업 영역 관리자 또는 프로젝트에 대한 "CAN MANAGE" 권한
  • 프로젝트를 만든 동일한 작업 영역에 있는 사용자의 Azure Databricks ID(이메일 주소)

시나리오: 읽기/쓰기 액세스 권한이 있는 데이터 분석가 추가

필요한 데이터 분석가 Alex Lopez 를 추가하는 단계를 살펴보겠습니다.

  • 브랜치, 컴퓨팅 자원 및 데이터베이스를 생성하고 관리하는 기능(CAN MANAGE)
  • Postgres 데이터베이스의 스키마에 public 있는 테이블에 대한 읽기 및 쓰기 권한
  • 분석을 위해 새 테이블을 만드는 기능

1단계: 프로젝트 권한 부여

먼저 사용자에게 프로젝트 관리 작업을 수행할 수 있도록 CAN MANAGE 권한을 부여합니다.

  1. Lakebase 앱에서 프로젝트로 이동합니다.
  2. 왼쪽 사이드바에서 설정을 클릭합니다.
  3. 프로젝트 권한 섹션으로 스크롤합니다.
  4. 권한 부여를 클릭합니다.
  5. 사용자를 검색하고 선택합니다.
  6. CAN MANAGE 권한을 선택합니다.
  7. Grant를 클릭합니다.

관리 가능 권한 부여

CAN MANAGE에서 허용하는 것은 다음과 같습니다.

  • 분기 만들기 및 삭제
  • 컴퓨팅 관리 및 프로젝트 설정 구성
  • 데이터베이스 및 Postgres 역할 만들기 및 관리
  • 프로젝트 작업에 대한 모든 권한

비고

CAN MANAGE는 다른 많은 작업을 포함하여 프로젝트에 대한 모든 권한을 부여합니다. CAN USE 를 사용하면 전체 관리 없이 리소스(목록, 보기, 연결 URI 및 특정 분기 작업 가져오기)를 보고 사용할 수 있습니다. 각 권한 수준 및 각 권한에서 허용하는 특정 작업의 전체 목록은 Lakebase 프로젝트 ACL을 참조하세요.

2단계: 사용자에 대한 Postgres 역할 만들기

이제 Alex가 OAuth 토큰과 함께 Azure Databricks ID를 사용하여 인증할 수 있도록 하는 OAuth 역할을 만듭니다. 프로젝트 소유자는 역할을 만드는 데 필요한 권한이 있습니다.

  1. Lakebase SQL 편집기를 열고 프로젝트에 연결합니다.

  2. 확장을 만듭니다 databricks_auth (아직 사용하도록 설정되지 않은 경우).

    CREATE EXTENSION IF NOT EXISTS databricks_auth;
    
  3. 함수를 databricks_create_role 사용하여 Alex에 대한 OAuth Postgres 역할을 만듭니다.

    SELECT databricks_create_role('alex.lopez@databricks.com', 'USER');
    

그러면 다음과 같은 OAuth 역할이 만들어집니다.

  • Azure Databricks ID와 동일한 이름을 사용합니다alex.lopez@databricks.com.
  • OAuth 토큰을 사용하여 인증할 수 있습니다.
  • LOGIN 권한 사용
  • 아직 데이터베이스 권한이 없습니다(다음으로 부여하겠습니다).

비고

OAuth 역할 정보:

  • OAuth 역할은 시간 제한 토큰을 사용하여 인증합니다(1시간 후에 만료됨).
  • 사용자가 Lakebase 앱 연결 대화 상자에서 토큰을 가져옵니다.
  • 대화형 세션 및 작업 영역 통합 워크플로에 가장 적합합니다.
  • 자세한 내용은 인증 정보를 참조하세요.

3단계: Postgres 데이터베이스 권한 부여

이제 Alex에게 필요한 데이터베이스 권한을 부여합니다. 그들에게 public 스키마에 대한 읽기-쓰기 액세스 권한을 부여합니다.

-- Grant CONNECT permission on the database
GRANT CONNECT ON DATABASE databricks_postgres TO "alex.lopez@databricks.com";

-- Grant USAGE permission on the public schema (required to access objects in it)
GRANT USAGE ON SCHEMA public TO "alex.lopez@databricks.com";

-- Grant CREATE permission on the public schema (allows creating new tables)
GRANT CREATE ON SCHEMA public TO "alex.lopez@databricks.com";

-- Grant read-write access to all existing tables in public schema
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO "alex.lopez@databricks.com";

-- Grant permissions on future tables (so Alex can access new tables automatically)
ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "alex.lopez@databricks.com";

-- Grant permission to use sequences (needed for SERIAL columns)
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO "alex.lopez@databricks.com";

-- Grant permissions on future sequences
ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT USAGE, SELECT ON SEQUENCES TO "alex.lopez@databricks.com";

이러한 사용 권한에서 허용하는 사항:

  • CONNECT: 데이터베이스에 연결
  • USAGE 스키마에서: 스키마 내 객체에 접근합니다
  • CREATE 스키마: 새 테이블, 뷰, 함수 만들기
  • SELECT, INSERT, UPDATE, DELETE 테이블에서 데이터 읽기 및 쓰기
  • 시퀀스 권한: 자동 증가 열 사용

4단계: 연결 테스트

Alex가 데이터베이스에 연결하고 액세스할 수 있는지 확인해 주세요.

Lakebase SQL 편집기 사용:

  1. Alex가 Lakebase 앱을 열고 프로젝트로 이동합니다.

  2. Alex가 Lakebase SQL 편집기를 엽니다.

  3. SQL 편집기에서 Alex는 다음 쿼리를 실행하여 사용 권한을 확인할 수 있어야 합니다.

    -- Check role memberships
    SELECT rolname FROM pg_roles WHERE rolname = 'alex.lopez@databricks.com';
    
    -- Verify can read data
    SELECT * FROM your_table LIMIT 5;
    
    -- Verify can write data
    INSERT INTO your_table (column1, column2) VALUES ('test', 'value');
    
    -- Verify can create tables
    CREATE TABLE alex_analysis (
        id SERIAL PRIMARY KEY,
        notes TEXT,
        created_at TIMESTAMP DEFAULT NOW()
    );
    

또는 psql을 사용합니다.

Alex는 다음과 같은 psql외부 도구에서 연결할 수도 있습니다.

  1. 프로젝트 대시보드에서 연결을 클릭합니다.
  2. 분기, 컴퓨팅 및 데이터베이스를 선택합니다.
  3. 역할 드롭다운에서 alex.lopez@databricks.com을 선택합니다.
  4. psql 연결 조각을 복사합니다.
  5. OAuth 토큰 복사를 클릭하여 인증 토큰을 가져옵니다.
  6. 복사한 psql 명령을 사용하여 연결하고 암호를 입력하라는 메시지가 표시되면 OAuth 토큰을 입력합니다.
  7. 위에 표시된 것과 동일한 확인 쿼리를 실행합니다.

대안: 읽기 전용 데이터베이스 액세스

데이터를 수정하지 않고만 쿼리해야 하는 사용자의 경우 동일한 프로젝트 권한을 부여하지만 더 제한적인 데이터베이스 권한을 사용합니다.

프로젝트 권한

보기 및 사용 전용 프로젝트 액세스(예: 연결 URI, 목록 분기)에 대해 CAN USE 를 부여합니다. GRANT CAN MANAGE 를 사용하여 데이터베이스, 역할 및 기타 프로젝트 작업을 만들 수 있습니다.

데이터베이스 사용 권한

-- Create OAuth role
SELECT databricks_create_role('analyst@databricks.com', 'USER');

-- Grant CONNECT permission
GRANT CONNECT ON DATABASE databricks_postgres TO "analyst@databricks.com";

-- Grant USAGE on the public schema
GRANT USAGE ON SCHEMA public TO "analyst@databricks.com";

-- Grant SELECT-only access to all existing tables
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "analyst@databricks.com";

-- Grant SELECT-only access to future tables
ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT SELECT ON TABLES TO "analyst@databricks.com";

-- Grant USAGE on sequences (needed to view sequence values)
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO "analyst@databricks.com";

이 권한은 다음과 같습니다.

  • 모든 테이블에 대한 읽기 권한
  • 데이터베이스 구조 보기
  • 데이터를 수정할 수 없음(아니요 INSERT, UPDATEDELETE)
  • 테이블 또는 다른 개체를 만들 수 없음

그룹 및 서비스 프린시펄과 작업하기

동일한 프로세스를 따라 Azure Databricks 그룹 및 서비스 주체에 대한 액세스 권한을 부여할 수 있습니다. Lakebase 앱 UI를 통해 프로젝트 권한을 부여하고, databricks_create_role()을(를) 사용하여 OAuth 역할을 만들며, 데이터베이스 권한을 부여합니다. 자세한 내용은 그룹서비스 주체를 참조하세요.

네이티브 Postgres 암호 역할 사용

OAuth 역할 대신 매시간 토큰, 장기 실행 프로세스 또는 OAuth를 지원하지 않는 외부 도구를 새로 고칠 수 없는 애플리케이션에 대한 네이티브 Postgres 암호 역할을 만들 수 있습니다. 암호 역할을 만들고 관리하는 방법에 대한 지침은 Postgres 역할 관리를 참조하세요.

다음 단계