비밀 관리
경우에 따라 데이터에 액세스하려면 JDBC를 통해 외부 데이터 원본에 인증해야 합니다. 자격 증명을 Notebook에 직접 입력하는 대신 Azure Databricks 비밀을 사용하여 자격 증명을 저장하고 Notebook 및 작업에서 참조할 수 있습니다. 이 문서에서는 Azure Databricks 비밀에 대한 개요를 제공합니다.
비밀 개요
비밀을 구성하고 사용하려면 다음을 수행합니다.
- 비밀 범위를 만듭니다. 비밀 범위는 이름으로 식별되는 비밀의 컬렉션입니다.
- 범위에 비밀 추가
- 비밀 범위에 대한 권한을 할당합니다.
- Databricks 유틸리티를 사용하여 비밀에 액세스합니다. 비밀 유틸리티(dbutils.secrets)를 참조하세요.
워크플로에서 비밀을 사용하는 방법에 대한 엔드 투 엔드 예제는 자습서: Databricks 비밀 만들기 및 사용을 참조하세요. Spark 구성 속성 또는 환경 변수에서 비밀을 사용하려면 Spark 구성 속성 또는 환경 변수에서 비밀 사용을 참조 하세요.
Warning
관리자, 비밀 작성자 및 권한이 부여된 사용자는 Azure Databricks 비밀을 읽을 수 있습니다. Databricks는 Notebook에 표시될 수 있는 비밀 값을 수정하기 위해 노력하지만 이러한 사용자가 비밀을 읽는 것을 방지할 수 없습니다. 비밀 편집을 참조하세요.
비밀 범위 관리
비밀 범위는 이름으로 식별되는 비밀의 컬렉션입니다. 개인보다는 역할 또는 애플리케이션에 비밀 범위를 맞추는 것이 좋습니다.
다음과 같은 두 가지 유형의 비밀 범위가 있습니다.
- Azure Key Vault 지원: Azure Key Vault 지원 비밀 범위를 사용하여 Azure Key Vault에 저장된 비밀을 참조할 수 있습니다. Azure Key Vault 지원 비밀 범위는 Key Vault에 대한 읽기 전용 인터페이스입니다. Azure의 Azure Key Vault 지원 비밀 범위에서 비밀을 관리해야 합니다.
- Databricks 지원: Databricks 지원 비밀 범위는 Azure Databricks에서 소유하고 관리하는 암호화된 데이터베이스에 저장됩니다.
비밀 범위를 만든 후에는 사용자에게 스캐릿 범위를 읽고 쓰고 관리할 수 있는 액세스 권한을 부여할 수 있는 권한을 할당할 수 있습니다.
Azure Key Vault에서 지원하는 비밀 범위 만들기
이 섹션에서는 Azure Portal 및 Azure Databricks 작업 영역 UI를 사용하여 Azure Key Vault 지원 비밀 범위를 만드는 방법을 설명합니다. Databricks CLI를 사용하여 Azure Key Vault 지원 비밀 범위를 만들 수도 있습니다.
요구 사항
- Azure Key Vault 인스턴스가 있어야 합니다. 키 자격 증명 모음 인스턴스가 없는 경우 Azure Portal을 사용하여 Key Vault 만들기의 지침을 따릅니다.
- 비밀 범위를 백업하는 데 사용하려는 Azure Key Vault 인스턴스에 Key Vault 기여자, 기여자 또는 소유자 역할이 있어야 합니다.
참고 항목
Azure Key Vault 지원 비밀 범위를 만들려면 Azure Databricks 서비스에 이전에 키 자격 증명 모음에 대한 액세스 권한이 부여된 경우에도 Azure키 자격 증명 모음 인스턴스에 대한 기여자 또는 소유자 역할이 필요합니다.
키 자격 증명 모음이 Azure Databricks 작업 영역과 다른 테넌트에 있는 경우 비밀 범위를 만드는 Azure AD 사용자는 키 자격 증명 모음의 테넌트에서 서비스 주체를 만들 수 있는 권한이 있어야 합니다. 그렇지 않으면 다음 오류가 발생합니다.
Unable to grant read/list permission to Databricks service principal to KeyVault 'https://xxxxx.vault.azure.net/': Status code 403, {"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"XXXXX","date":"YYYY-MM-DDTHH:MM:SS"}}
Azure Databricks에 대한 Azure Key Vault 인스턴스 구성
Azure Portal에 로그인하고 Azure Key Vault 인스턴스를 찾아 선택합니다.
설정에서 [액세스 구성] 탭을 클릭합니다.
권한 모델을 자격 증명 모음 액세스 정책으로 설정합니다.
참고 항목
Azure Key Vault 지원 비밀 범위 역할을 만들면 키 자격 증명 모음 액세스 정책을 사용하여 Azure Databricks 서비스의 애플리케이션 ID에 대한 가져오기 및 목록 권한을 부여합니다. Azure 역할 기반 액세스 제어 권한 모델은 Azure Databricks에서 지원되지 않습니다.
설정에서 네트워킹을 선택합니다.
방화벽 및 가상 네트워크 집합에서 액세스 허용:특정 가상 네트워크 및 IP 주소에서 공용 액세스를 허용합니다.
예외에서 신뢰할 수 있는 Microsoft 서비스 이 방화벽을 무시하도록 허용을 선택합니다.
참고 항목
모든 네트워크에서 공용 액세스를 허용하도록 다음에서 액세스 허용을 설정할 수도 있습니다.
Azure Key Vault에서 지원하는 비밀 범위 만들기
https://<databricks-instance>#secrets/createScope
(으)로 이동합니다.<databricks-instance>
를 Azure Databricks 배포의 작업 영역 URL로 바꿉니다. 이 URL은 대/소문자를 구분합니다. 예를 들어 대scope
createScope
문자S
)를 사용해야 합니다.비밀 범위의 이름을 입력합니다. 비밀 범위 이름은 대/소문자를 구분하지 않습니다.
보안 주체 관리에서 작성자 또는 모든 작업 영역 사용자를 선택하여 비밀 범위에 대한 MANAGE 권한이 있는 사용자를 지정합니다.
MANAGE 권한을 사용하면 사용자가 범위에 대한 권한을 읽고 쓰고 부여할 수 있습니다. 작성자를 선택하려면 계정에 프리미엄 플랜이 있어야 합니다.
DNS 이름(예:
https://databrickskv.vault.azure.net/
) 및 리소스 ID를 입력합니다. 예를 들면 다음과 같습니다./subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
이러한 속성은 Azure Portal에 있는 Azure Key Vault의 설정 > 속성 탭에서 사용할 수 있습니다.
만들기를 클릭합니다.
Databricks CLI
databricks secrets list-scopes
명령을 사용하여 범위가 성공적으로 생성되었는지 확인합니다.
Databricks 지원 비밀 범위 만들기
이 섹션에서는 Databricks CLI란?(버전 0.205 이상)을 사용하여 비밀 범위를 만드는 방법을 설명합니다. 비밀 API를 사용할 수도 있습니다.
비밀 범위 이름:
- 작업 영역 내에서 고유해야 합니다.
- 영숫자 문자, 대시, 밑
@
줄 및 마침표로 구성되어야 하며 128자를 초과할 수 없습니다. - 대/소문자를 구분하지 않습니다.
비밀 범위 이름은 민감하지 않은 것으로 간주되며 작업 영역의 모든 사용자가 읽을 수 있습니다.
Databricks CLI를 사용하여 범위를 만들려면 다음을 수행합니다.
databricks secrets create-scope <scope-name>
기본적으로 범위는 범위를 만든 사용자에 대한 MANAGE 권한으로 만들어집니다. Databricks 지원 비밀 범위를 만든 후에는 비밀을 추가할 수 있습니다.
비밀 범위 나열
CLI를 사용하여 작업 영역에 있는 기존 범위를 나열하려면 다음을 수행합니다.
databricks secrets list-scopes
비밀 API를 사용하여 비밀 범위를 나열할 수도 있습니다.
비밀 범위 삭제
비밀 범위를 삭제하면 해당 범위에 적용된 모든 비밀과 ACL이 삭제됩니다. CLI를 사용하여 범위를 삭제하려면 다음을 실행합니다.
databricks secrets delete-scope <scope-name>
비밀 API를 사용하여 비밀 범위를 삭제할 수도 있습니다.
비밀 관리
비밀은 비밀 범위 내에서 고유한 키 이름을 사용하여 중요한 자료를 저장하는 키-값 쌍입니다.
이 섹션에서는 Databricks CLI란?(버전 0.205 이상)을 사용하여 비밀 범위를 만드는 방법을 설명합니다. 비밀 API를 사용할 수도 있습니다. 비밀 이름은 대/소문자를 구분하지 않습니다.
비밀 만들기
비밀을 만드는 방법은 Azure Key Vault 지원 범위 또는 Databricks 지원 범위를 사용하는지 여부에 따라 달라집니다.
Azure Key Vault에서 지원하는 범위에서 비밀 만들기
Azure Key Vault에서 비밀을 만들려면 Azure Portal 또는 Azure Set Secret REST API를 사용합니다. 예를 들어 4단계: Azure Key Vault에 클라이언트 암호 추가를 참조하세요.
Databricks 지원 범위에서 비밀 만들기
이 섹션에서는 Databricks CLI란?을 사용하여 비밀을 만드는 방법을 설명합니다.(버전 0.205 이상) 또는 Python용 Databricks SDK를 사용하는 Notebook. 비밀 API를 사용할 수도 있습니다. 비밀 이름은 대/소문자를 구분하지 않습니다.
Databricks CLI
Databricks 지원 범위에서 비밀을 만들 때 다음 세 가지 방법 중 하나로 비밀 값을 지정할 수 있습니다.
- –string-value 플래그를 사용하여 값을 문자열로 지정합니다.
- 대화형으로 메시지가 표시되면 비밀을 입력합니다(한 줄 비밀).
- 표준 입력(여러 줄 비밀)을 사용하여 비밀을 전달합니다.
예시:
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 <scope-name> <key-name>
Python용 Databricks SDK
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.secrets.put_secret("<secret_scope>","<key-name>",string_value ="<secret>")
비밀 읽기
노트북이나 작업에서 비밀을 읽으려면 비밀 도구(dbutils.secrets)를 사용해야 합니다. 예시:
password = dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")
비밀 나열
지정된 범위에서 비밀을 나열하려면 다음을 수행합니다.
databricks secrets list-secrets <scope-name>
응답은 비밀의 키 이름과 같은 비밀에 대한 메타데이터 정보를 표시합니다. Notebook 또는 작업에서 비밀 유틸리티(dbutils.secrets)를 사용하여 이 메타데이터를 나열합니다. 예시:
dbutils.secrets.list('my-scope')
비밀 삭제
Databricks CLI를 사용하여 범위에서 비밀을 삭제하려면 다음을 수행합니다.
databricks secrets delete-secret <scope-name> <key-name>
비밀 API를 사용할 수도 있습니다.
Azure Key Vault에서 지원되는 범위에서 비밀을 삭제하려면 Azure SetSecret REST API 또는 Azure Portal UI를 사용합니다.
비밀 범위 권한 관리
기본적으로 비밀 범위를 만드는 사용자에게는 MANAGE 권한이 부여됩니다. 이렇게 하면 범위 작성자가 범위에서 비밀을 읽고, 범위에 비밀을 쓰고, 범위에 대한 권한을 관리할 수 있습니다.
참고 항목
비밀 ACL은 범위 수준에 있습니다. Azure Key Vault 지원 범위를 사용하는 경우 범위에 대한 액세스 권한이 부여된 사용자는 Azure Key Vault의 모든 비밀에 액세스할 수 있습니다. 액세스를 제한하려면 별도의 Azure Key Vault 인스턴스를 사용합니다.
이 섹션에서는 Databricks CLI란?(버전 0.205 이상)을 사용하여 비밀 액세스 제어를 관리하는 방법을 설명합니다. 비밀 API를 사용할 수도 있습니다. 비밀 권한 수준은 비밀 ACL을 참조 하세요.
비밀 범위에 대한 사용자 권한 부여
Databricks CLI를 사용하여 비밀 범위에 대한 사용자 권한을 부여하려면 다음을 수행합니다.
databricks secrets put-acl <scope-name> <principal> <permission>
이미 적용된 권한이 있는 보안 주체에 대한 put 요청을 만들면 기존 권한 수준을 덮어씁니다.
principal
필드는 기존 Azure Databricks 보안 주체를 지정합니다. 사용자는 전자 메일 주소, 해당 applicationId
값을 사용하는 서비스 주체 및 그룹 이름을 사용하는 그룹을 사용하여 지정됩니다. 자세한 내용은 보안 주체를 참조 하세요.
비밀 범위 권한 보기
지정된 비밀 범위에 대한 모든 비밀 범위 권한을 보려면 다음을 수행합니다.
databricks secrets list-acls <scope-name>
지정된 비밀 범위에 대한 보안 주체에 적용된 비밀 범위 권한을 얻으려면 다음을 수행합니다.
databricks secrets get-acl <scope-name> <principal>
지정된 보안 주체 및 범위에 대한 ACL이 없으면 이 요청이 실패합니다.
비밀 범위 권한 삭제
지정된 비밀 범위에 대한 보안 주체에 적용된 비밀 범위 권한을 삭제하려면 다음을 수행합니다.
databricks secrets delete-acl <scope-name> <principal>
비밀 편집
자격 증명을 Azure Databricks 비밀로 저장하면 Notebook 및 작업을 실행할 때 자격 증명을 쉽게 보호할 수 있습니다. 그러나 실수로 비밀을 표준 출력 버퍼에 출력하거나 변수 할당 중에 값을 표시하는 일이 발생할 수 있습니다.
이를 방지하기 위해 Azure Databricks는 을 사용하여 dbutils.secrets.get()
읽는 모든 비밀 값을 수정합니다. Notebook 셀 출력에 표시될 때는 비밀 값이 [REDACTED]
로 바뀝니다.
예를 들어 변수를 사용하여 dbutils.secrets.get()
비밀 값으로 설정한 다음 해당 변수를 인쇄하면 해당 변수가 .로 [REDACTED]
바뀝니다.
Warning
Notebook 셀 출력의 비밀 삭제는 리터럴에만 적용됩니다. 비밀 편집 기능은 비밀 리터럴의 의도적이고 임의적인 변환을 방지하지 않습니다. 비밀의 적절한 제어를 보장하려면 액세스 제어 목록을 사용하여 명령을 실행할 수 있는 권한을 제한해야 합니다. 이렇게 하면 공유 전자 필기장 컨텍스트에 무단으로 액세스할 수 없습니다.