개인 데이터베이스

개인 데이터베이스란 무엇입니까?

PDB(개인 데이터베이스)는 Snowflake에서 자동으로 프로비저닝되는 시스템 소유의 사용자 관리 데이터베이스 인스턴스입니다. 사용자가 자신의 데이터베이스 오브젝트를 생성, 구성, 관리할 수 있는 전용 개인 저장소 역할을 합니다.

자동 프로비저닝을 사용하면 사용자가 수동으로 선택하거나 공유 데이터베이스에 대한 액세스를 요청해야 하는 관리 요구 사항이 해결되어 전용 개발 환경이 보장됩니다. 사용자가 시스템에서 삭제되면 연결된 PDB 및 모든 오브젝트가 ACCOUNTADMIN 소유권으로 자동 전송됩니다.

PDB의 장점

  • 개인 프로젝트 구성: 사용자는 격리된 환경에서 자신의 프로젝트를 구성하여 공유 데이터베이스에서 혼란과 잠재적인 이름 충돌을 줄일 수 있습니다.

  • 간편한 관리자 거버넌스: 모든 파일 관련 개발은 RBAC에 의해 완전히 관리됩니다.

PDB 오브젝트 유형

현재, PDBs는 사용자를 위한 전용 개발 환경을 제공하는 두 가지 기본 오브젝트 유형인 작업 공간과 노트북을 지원합니다.

작업 공간

PDB는 사용자가 :doc:`작업 공간UI</user-guide/ui-snowsight/workspaces>`과 처음 상호 작용할 때 생성됩니다. 작업 공간은 파일 기반 엔터티이며 Snowflake 데이터베이스 내에 저장소가 필요합니다.

Notebooks

PDBs는 :doc:`Snowflake 노트북</user-guide/ui-snowsight/notebooks>`에 대한 관리형 컴퓨팅 서비스를 지원합니다. 코드 실행을 활성화하기 위해 Snowflake 관리형 서비스 오브젝트가 PDB 내에 자동으로 생성됩니다. 이렇게 하면 노트북의 실행 컨텍스트가 사용자가 이미 소유한 모든 역할과 권한에 바인딩됩니다. 이 오브젝트는 작업 공간을 |spcs|(SPCS) 컴퓨팅 풀에 연결하여 개발자가 |sf-notebooks| 코드를 실행할 수 있도록 합니다.

중요

사용자는 코드를 실행할 서비스를 생성하기 위해 연결된 컴퓨팅 풀에 대해 USAGE 권한이 있어야 합니다. 이 권한은 MANAGE GRANTS 권한이 있는 모든 역할이 부여할 수 있습니다.

보안

PDB의 아키텍처는 의도적으로 간소화되었으며 모든 작업이 사용자의 기존 보안 컨텍스트로 엄격하게 제한되도록 보장하는 최소 권한 원칙을 준수합니다.

  • 새 데이터 액세스 권한 없음: PDBs는 데이터에 대한 새로운 액세스 또는 확장된 액세스 권한이나 추가적인 데이터 공유 기능을 도입하지 않습니다. 사용자는 일반 데이터베이스에서 PDB로 데이터를 이동할 수 없습니다.

  • 권한 컨텍스트: 작업 공간 내에서 실행되는 모든 SQL 쿼리는 사용자가 이미 소유하고 있는 것과 똑같은 역할 및 권한 세트로 실행됩니다. 이는 표준 Snowflake 작업 공간 파일의 실행 환경을 미러링합니다.

참고

개인 데이터베이스는 개인 시크릿도 지원합니다. :doc:`시크릿 오브젝트</sql-reference/sql/create-secret>`는 사용자가 독점적으로 소유합니다. 이렇게 하면 기본적으로 시크릿이 비공개로 유지되고 사용자만 액세스할 수 있으며 실수로 공유되지 않도록 보장됩니다.

PDB 관리 및 가시성

관리자는 역할이 아닌 시스템이 소유하는 PDBs의 사용을 모니터링하고 제어할 수 있습니다. PDB의 사용은 할당된 사용자로 제한됩니다. PDB 내부의 오브젝트는 공유할 수 없습니다.

관리자 표시 여부

MANAGE GRANTS 권한이 있는 역할은 개별 사용자가 소유한 개인 오브젝트를 포함하여 계정 내의 모든 오브젝트에 대한 가시성을 갖습니다. 예를 들어, ACCOUNTADMIN과 같은 역할은 기본적으로 개인 데이터베이스를 포함한 모든 데이터베이스를 볼 수 있습니다. 이러한 역할은 개인 데이터베이스 내의 스키마와 해당 오브젝트에 대한 세부 정보에도 액세스할 수 있습니다.

  • 계정 내의 모든 개인 데이터베이스에 대한 세부 정보를 보려면 DATABASES Account Usage 뷰 를 쿼리하십시오.

    SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.DATABASES
    WHERE DATABASE_NAME LIKE 'USER$%';
    
    Copy
  • 특정 작업 공간에 있는 오브젝트를 보려면 다음 코드를 사용합니다.

    SHOW WORKSPACES IN DATABASE "USER$CMEYER";
    
    Copy
  • 특정 사용자의 개인 데이터베이스를 보려면 다음 코드를 사용합니다.

    SHOW DATABASES LIKE 'USER$BOBR';
    
    Copy

    개인 데이터베이스의 경우 kind 열의 값은 PERSONAL DATABASE 입니다.

  • 특정 개인 데이터베이스의 오브젝트를 보려면 다음 코드를 사용합니다.

    SHOW OBJECTS IN DATABASE "USER$<username>";
    
    Copy

오브젝트 삭제

  • 개인 데이터베이스에서 오브젝트를 삭제하려면 다음 코드를 사용합니다.

    DROP WORKSPACE "USER$JSMITH_DROP_WS_TEST".PUBLIC."drop_this_ws";
    
    Copy

비용 고려 사항

  • 사용자는 PDBs의 테이블에 데이터를 저장할 수 없습니다.

  • 저장소 비용에는 작업 영역 파일 및 관련 메타데이터의 크기만 반영됩니다.

제한 사항

관리자는 다음 작업을 수행할 수 없습니다.

  • 다른 사용자에게 속한 파일 이름 또는 파일 내용을 봅니다.

  • PDBs에 사용되는 저장소의 양을 확인합니다. PDBs는 :code:`DATABASE_STORAGE_USAGE_HISTORY`에 표시되지 않습니다.

  • 각 PDB에 사용되는 저장소 양을 제한합니다.

  • PDBs를 삭제하거나 개별 사용자가 사용하지 못하게 합니다.

  • 새 PDBs를 생성합니다. 새 PDBs는 사용자가 작업 공간을 만들 때 온디맨드 방식으로 생성됩니다.