비밀

비밀은 비밀 범위 내에서 고유한 키 이름을 가진 비밀 자료를 저장하는 키-값 쌍입니다. 각 범위는 1000개의 비밀로 제한됩니다. 허용되는 최대 비밀 값 크기는 128KB입니다.

비밀 API참조하세요.

비밀 만들기

비밀 이름은 대/소문자를 구분하지 않습니다.

비밀을 만드는 방법은 Azure Key Vault 지원 범위 또는 Databricks 지원 범위를 사용하는지 여부에 따라 달라집니다.

Azure Key Vault에서 지원하는 범위에서 비밀 만들기

Azure Key Vault에서 비밀을 만들려면 Azure Set Secret REST API 또는 Azure Portal UI를 사용합니다.

Azure Key Vault

Databricks 지원 범위에서 비밀 만들기

Databricks CLI(버전 0.205 이상)를 사용하여 Databricks 지원 범위에서 비밀을 만들려면 다음을 실행합니다.

databricks secrets put-secret --json '{
  "scope": "<scope-name>",
  "key": "<key-name>",
  "string_value": "<secret>"
}'

여러 줄 비밀을 만드는 경우 표준 입력을 사용하여 비밀을 전달할 수 있습니다. 예시:

(cat << EOF
this
is
a
multi
line
secret
EOF
) | databricks secrets put-secret <secret_scope> <secret_key>

파일에서 비밀을 제공할 수도 있습니다. 비밀 작성에 대한 자세한 내용은 Databricks CLI란?을 참조하세요.

비밀 나열

지정된 범위에서 비밀을 나열하려면 다음을 수행합니다.

databricks secrets list-secrets <scope-name>

응답은 비밀의 키 이름과 같은 비밀에 대한 메타데이터 정보를 표시합니다. Notebook 또는 작업에서 비밀 유틸리티(dbutils.secrets)를 사용하여 이 메타데이터를 나열합니다. 예시:

dbutils.secrets.list('my-scope')

비밀 읽기

REST API 또는 CLI를 사용하여 보안 비밀을 만들지만, Notebook 또는 작업에서 비밀 유틸리티(dbutils.secrets)를 사용하여 보안 비밀을 읽어야 합니다.

비밀 삭제

Databricks CLI를 사용하여 범위에서 비밀을 삭제하려면 다음을 수행합니다.

databricks secrets delete-secret <scope-name> <key-name>

비밀 API사용할 수도 있습니다.

Azure Key Vault에서 지원되는 범위에서 비밀을 삭제하려면 Azure SetSecret REST API 또는 Azure Portal UI를 사용합니다.

Spark 구성 속성이나 환경 변수의 비밀 사용

Important

이 기능은 공개 미리 보기 상태입니다.

참고 항목

Databricks Runtime 6.4 확장 지원 이상에서 사용할 수 있습니다.

Spark 구성 속성이나 환경 변수의 비밀을 참조할 수 있습니다. 검색된 비밀은 Notebook 출력과 Spark 드라이버 및 실행기 로그에서 수정됩니다.

Important

Spark 구성 속성이나 환경 변수의 비밀을 참조할 때 다음과 같은 보안 영향을 염두에 두어야 합니다.

  • 클러스터에서 테이블 액세스 제어를 사용하도록 설정하지 않은 경우 클러스터에 연결할 수 있는 권한이 있거나 Notebook에 대한 실행 권한이 있는 사용자는 Notebook 내에서 Spark 구성 속성을 읽을 수 있습니다. 여기에는 비밀을 읽을 수 있는 직접 권한이 없는 사용자가 포함됩니다. Databricks는 모든 클러스터에서 테이블 액세스 제어를 사용하도록 설정하거나 비밀 범위를 사용하여 비밀에 대한 액세스를 관리하는 것이 좋습니다.

  • 테이블 액세스 제어를 사용하는 경우에도 클러스터에 연결할 수 있는 권한이 있거나 Notebook에 대한 실행 권한이 있는 사용자는 Notebook 내에서 클러스터 환경 변수를 읽을 수 있습니다. Databricks는 클러스터의 모든 사용자가 사용할 수 없어야 하는 경우 클러스터 환경 변수에 비밀을 저장하지 않는 것이 좋습니다.

  • 비밀은 Spark 드라이버 로그 stdoutstderr 스트림에서 수정되지 않습니다. 중요한 데이터를 보호하기 위해 기본적으로 Spark 드라이버 로그는 작업, 단일 사용자 액세스 모드 및 공유 액세스 모드 클러스터에 대한 CAN MANAGE 권한이 있는 사용자만 볼 수 있습니다. CAN ATTACH TO 또는 CAN RESTART 권한이 있는 사용자가 이러한 클러스터의 로그를 볼 수 있도록 하려면 클러스터 구성 spark.databricks.acl.needAdminPermissionToViewLogs false에서 다음 Spark 구성 속성을 설정합니다.

    격리 공유 액세스 모드 클러스터가 없는 경우 CAN ATTACH TO 또는 CAN MANAGE 권한이 있는 사용자가 Spark 드라이버 로그를 볼 수 있습니다. CAN MANAGE 권한이 있는 사용자만 로그를 읽을 수 있는 사용자를 제한하려면 다음으로 true설정합니다spark.databricks.acl.needAdminPermissionToViewLogs.

요구 사항 및 제한 사항

다음 요구 사항과 제한 사항은 Spark 구성 속성과 환경 변수의 비밀을 참조하는 데 적용됩니다.

  • 클러스터 소유자는 비밀 범위에 대해 CAN READ 권한이 있어야 합니다.
  • 클러스터 소유자만 Spark 구성 속성이나 환경 변수의 비밀을 참조하고 기존 범위와 이름을 편집할 수 있습니다. 소유자는 비밀 API사용하여 비밀을 변경합니다. 비밀을 다시 가져오려면 클러스터를 다시 시작해야 합니다.
  • 클러스터에 대한 CAN MANAGE 권한이 있는 사용자는 비밀 Spark 구성 속성 또는 환경 변수를 삭제할 수 있습니다.

Spark 구성 속성이나 환경 변수의 비밀을 참조하는 구문

유효한 변수 이름이나 Spark 구성 속성을 사용하여 비밀을 참조할 수 있습니다. Azure Databricks는 변수 이름이 아닌 설정되는 값의 구문을 기반으로 비밀을 참조하는 변수에 특별한 동작을 사용합니다.

Spark 구성 속성이나 환경 변수 값의 구문은 {{secrets/<scope-name>/<secret-name>}}이어야 합니다. 값은 {{secrets/로 시작하고 }}로 끝나야 합니다.

Spark 구성 속성 또는 환경 변수의 변수 부분은 다음과 같습니다.

  • <scope-name>: 비밀이 연결된 범위의 이름입니다.
  • <secret-name>: 범위 내 비밀의 고유 이름입니다.

예들 들어 {{secrets/scope1/key1}}입니다.

참고 항목

  • 중괄호 사이에 공백이 없어야 합니다. 공백이 있는 경우 범위 또는 비밀 이름의 일부로 처리됩니다.

Spark 구성 속성을 사용하여 비밀 참조

다음 형식으로 Spark 구성 속성의 비밀에 대한 참조를 지정합니다.

spark.<property-name> {{secrets/<scope-name>/<secret-name>}}

모든 Spark 구성 <property-name>에서 비밀을 참조할 수 있습니다. Spark 구성 속성마다 비밀 하나만 참조할 수 있지만 비밀을 참조하도록 여러 Spark 속성을 구성할 수 있습니다.

예시:

비밀을 참조하도록 Spark 구성을 설정합니다.

spark.password {{secrets/scope1/key1}}

Notebook에서 비밀을 가져와서 사용하려면 다음을 수행합니다.

Python

spark.conf.get("spark.password")

SQL

SELECT ${spark.password};

환경 변수에서 비밀 참조

환경 변수의 비밀 경로를 다음 형식으로 지정합니다.

<variable-name>={{secrets/<scope-name>/<secret-name>}}

비밀을 참조할 때 유효한 변수 이름을 사용할 수 있습니다. 환경 변수에서 참조되는 비밀에 대한 액세스는 클러스터를 구성한 사용자의 권한에 따라 결정됩니다. 환경 변수에 저장된 비밀은 클러스터의 모든 사용자가 액세스할 수 있지만 다른 곳에서 참조되는 비밀처럼 일반 텍스트 표시에서 수정됩니다.

비밀을 참조하는 환경 변수는 클러스터 범위 init 스크립트에서 액세스할 수 있습니다. init 스크립트에서 환경 변수 설정 및 사용을 참조 하세요.

예시:

비밀을 참조하도록 환경 변수를 설정합니다.

SPARKPASSWORD={{secrets/scope1/key1}}

init 스크립트에서 비밀을 가져오려면 다음 패턴을 사용하여 $SPARKPASSWORD에 액세스 합니다.

if [ -n "$SPARKPASSWORD" ]; then
  # code to use ${SPARKPASSWORD}
fi

비밀 권한 관리

이 섹션에서는 Databricks CLI란?(버전 0.205 이상)을 사용하여 비밀 액세스 제어를 관리하는 방법을 설명합니다. 비밀 API 또는 Databricks Terraform 공급자를 사용할 수도 있습니다. 비밀 권한 수준은 비밀 ACL을 참조 하세요.

비밀 ACL 만들기

Databricks CLI(레거시)를 사용하여 지정된 비밀 범위에 대한 비밀 ACL을 만들려면

databricks secrets put-acl <scope-name> <principal> <permission>

이미 적용된 권한이 있는 보안 주체에 대한 put 요청을 만들면 기존 권한 수준을 덮어씁니다.

principal 필드는 기존 Azure Databricks 보안 주체를 지정합니다. 사용자는 전자 메일 주소, 해당 applicationId 값을 사용하는 서비스 주체 및 그룹 이름을 사용하는 그룹을 사용하여 지정됩니다.

비밀 ACL 보기

지정된 비밀 범위에 대한 모든 비밀 ACL을 보려면 다음을 수행합니다.

databricks secrets list-acls <scope-name>

지정된 비밀 범위에 대한 보안 주체에 적용된 비밀 ACL을 가져오려면 다음을 수행합니다.

databricks secrets get-acl <scope-name> <principal>

지정된 보안 주체 및 범위에 대한 ACL이 없으면 이 요청이 실패합니다.

비밀 ACL 삭제

지정된 비밀 범위에 대한 보안 주체에 적용된 비밀 ACL을 삭제하려면 다음을 수행합니다.

databricks secrets delete-acl <scope-name> <principal>