다음을 통해 공유


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

이 문서에서는 Spark 구성 속성 또는 환경 변수에서 비밀을 참조하는 방법에 대해 자세히 설명합니다. 검색된 비밀은 Notebook 출력과 Spark 드라이버 및 실행기 로그에서 수정됩니다.

Important

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

보안 고려 사항

Databricks는 클러스터의 모든 사용자가 사용할 수 없어야 하는 경우 클러스터 환경 변수에 비밀을 저장하지 않는 것이 좋습니다. Spark 구성 속성이나 환경 변수의 비밀을 참조할 때 다음과 같은 보안 영향을 염두에 두어야 합니다.

  • 클러스터에 대한 CAN ATTACH TO 권한 또는 Notebook에 대한 실행 권한이 있는 사용자는 Notebook 내에서 클러스터 환경 변수를 읽을 수 있습니다.

  • 클러스터에서 테이블 액세스 제어를 사용하도록 설정하지 않은 경우 클러스터에 대해 CAN ATTACH TO 권한이 있거나 Notebook에 대한 실행 권한이 있는 사용자는 Notebook 내에서 Spark 구성 속성을 읽을 수 있습니다. 여기에는 비밀을 읽을 수 있는 직접 권한이 없는 사용자가 포함됩니다.

  • 비밀은 Spark 드라이버 로그 stdoutstderr 스트림에서 수정되지 않습니다. 중요한 데이터를 보호하기 위해 기본적으로 Spark 드라이버 로그는 작업, 단일 사용자 액세스 모드 및 공유 액세스 모드 컴퓨팅에 대한 CAN MANAGE 권한이 있는 사용자만 볼 수 있습니다.

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

요구 사항

다음 요구 사항은 Spark 구성 속성 및 환경 변수에서 비밀을 참조하는 데 적용됩니다.

  • 클러스터 소유자는 비밀 범위에 대해 CAN READ 권한이 있어야 합니다.
  • Spark 구성 속성 또는 환경 변수에서 비밀을 추가하거나 편집하려면 클러스터 소유자여야 합니다.
  • 비밀이 업데이트된 경우 클러스터를 다시 시작하여 비밀을 다시 가져와야 합니다.
  • 비밀 Spark 구성 속성 또는 환경 변수를 삭제하려면 클러스터에 대한 CAN MANAGE 권한이 있어야 합니다.

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

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

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

다음을

  • <scope-name> 비밀 범위의 이름으로 지정합니다.
  • <secret-name> 범위에서 비밀의 고유한 이름을 가진 입니다.
  • <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