🧱 Security & Administration
Unity Catalog security, Secrets, Network isolation, Cluster policies
🔐 Unity Catalog Security
GRANT/REVOKE — через SQL: `GRANT SELECT ON TABLE catalog.schema.table TO group`. Row-level security — через row filter. Column-level masking — masking policy. Data lineage — откуда пришли данные и куда ушли. Audit Log — кто и к каким данным обращался.
🔑 Secrets Management
Databricks Secrets — хранение чувствительных данных, таких как API key, пароль БД. Secret Scope: Databricks-backed или Azure Key Vault / AWS Secrets Manager backed. `dbutils.secrets.get(scope, key)` — внутри кода. Значение секрета скрывается в логах. CLI: `databricks secrets put-secret`.
🌐 Network Isolation
VNet/VPC Injection — запуск кластеров Databricks в VPC/VNet клиента (Customer-Managed VPC). Private Link — приватное соединение с control plane Databricks. IP Access List — доступ к Workspace только с определённых IP-адресов. No Public IP (NPIP) — узлы кластера без публичного IP.
⚙️ Cluster Policies & Cost Management
Cluster Policy — конфигурация с ограничениями, задаваемая администратором (максимальный размер кластера, тип инстанса, таймаут). Пользователи без прав администратора обязаны соблюдать политику. Cost tagging — добавление тегов к кластерам и заданиям (department, project). Budget alert — в Databricks Account Console.
💡 Ключевые моменты
- Unity Catalog: GRANT/REVOKE, row filter, column masking, lineage
- Secrets: dbutils.secrets.get() — скрыто в логах
- Secret Scope: Databricks-backed или cloud KV backed
- VPC Injection: кластер в VPC клиента
- Cluster Policy: администратор ограничивает, пользователь соблюдает
📋 Пример кода
# Secrets
# CLI: databricks secrets create-scope --scope my-scope
# CLI: databricks secrets put-secret --scope my-scope --key db-password --string-value "secret123"
# Notebook da ishlatish
password = dbutils.secrets.get(scope="my-scope", key="db-password")
# password = "[REDACTED]" — print qilsangiz ham ko'rsatmaydi
# Unity Catalog GRANT
spark.sql("""
GRANT SELECT ON TABLE main.sales.orders TO `data-analysts`
""")
spark.sql("""
GRANT MODIFY ON SCHEMA main.sales TO `data-engineers`
""")
# Row-level security (row filter)
spark.sql("""
CREATE ROW FILTER region_filter ON main.sales.orders
AS (user_name) RETURN CURRENT_USER() = user_name OR IS_ACCOUNT_GROUP_MEMBER('admin')
""")
spark.sql("""
ALTER TABLE main.sales.orders SET ROW FILTER region_filter ON (user_name)
""")
🎯 Советы для экзамена
- dbutils.secrets.get() — значение секрета скрывается в логах (отображается REDACTED)
- Row-level security: row filter в Unity Catalog — аналог условия SQL WHERE
- No Public IP (NPIP): узлы кластера только с приватным IP, выход через NAT Gateway
- Cluster Policy — администратор ограничивает конфигурацию, пользователь без прав администратора выбирает только из разрешённых вариантов
- Audit Log: в Unity Catalog фиксирует, кто и к какой таблице обращался
⚠️ Частые ошибки
- Считать, что вывод секрета через print в notebook безопасен — print тоже не показывает значение (но будьте внимательны)
- Путать VPC Injection с Peering — VPC Injection означает, что кластер находится В VPC клиента, а Peering — соединение МЕЖДУ двумя VPC
- Считать, что Cluster Policy ограничивает только тип инстанса — можно также ограничивать таймаут, версию Spark, переменные окружения
🧠 Для запоминания: "SNPC" = Secrets (dbutils), Network (VPC injection), Policy (cluster), Catalog (Unity) — 4 уровня безопасности Databricks
Проверьте себя по теме «Security & Administration»
Бесплатные интерактивные тесты, пробный экзамен и полные уроки — на платформе CertMaster.
Начать бесплатно →