Spark 구성 속성이나 환경 변수의 비밀 사용
이 문서에서는 Spark 구성 속성 또는 환경 변수에서 비밀을 참조하는 방법에 대해 자세히 설명합니다. 검색된 비밀은 Notebook 출력과 Spark 드라이버 및 실행기 로그에서 수정됩니다.
Important
이 기능은 공개 미리 보기 상태입니다.
보안 고려 사항
Databricks는 클러스터의 모든 사용자가 사용할 수 없어야 하는 경우 클러스터 환경 변수에 비밀을 저장하지 않는 것이 좋습니다. Spark 구성 속성이나 환경 변수의 비밀을 참조할 때 다음과 같은 보안 영향을 염두에 두어야 합니다.
클러스터에 대한 CAN ATTACH TO 권한 또는 Notebook에 대한 실행 권한이 있는 사용자는 Notebook 내에서 클러스터 환경 변수를 읽을 수 있습니다.
클러스터에서 테이블 액세스 제어를 사용하도록 설정하지 않은 경우 클러스터에 대해 CAN ATTACH TO 권한이 있거나 Notebook에 대한 실행 권한이 있는 사용자는 Notebook 내에서 Spark 구성 속성을 읽을 수 있습니다. 여기에는 비밀을 읽을 수 있는 직접 권한이 없는 사용자가 포함됩니다.
비밀은 Spark 드라이버 로그
stdout
및stderr
스트림에서 수정되지 않습니다. 중요한 데이터를 보호하기 위해 기본적으로 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