配置審計日誌記錄

請注意

該特性可在優質計劃或以上及以上。

Databricks提供對Databricks用戶執行的活動的審計日誌的訪問,允許您的企業監視詳細的Databricks使用模式。

日誌有兩種類型:

  • 帶有工作空間級事件的工作空間級審計日誌。

  • 包含帳戶級事件的帳戶級審計日誌。

有關每種類型的事件和相關服務的列表,請參見審計事件

配置詳細審計日誌

除了默認的事件,您可以通過啟用來配置工作空間以生成其他事件詳細審計日誌

要啟用詳細審計日誌,您的帳戶和工作空間必須位於平台的E2版本上。Beplay体育安卓版本要確認您正在使用的平台版本,請與您的Databricks代表Beplay体育安卓版本聯係。

額外的筆記本的行為

審計日誌類別中的其他操作筆記本

  • 動作名稱runCommand,在Databricks在筆記本中運行命令後發出。命令對應於筆記本中的一個單元格。

    請求參數:

    • notebookId:筆記本ID

    • executionTime:命令執行的時間,單位為秒。這是一個十進製值,例如13.789

    • 狀態:命令的狀態。可能的值是完成了(命令完成),跳過(該命令被跳過),取消了(命令被取消),或者失敗的(命令失敗)。

    • commandId:該命令的唯一ID。

    • commandText:命令的文本。對於多行命令,行之間用換行符分隔。

額外的Databricks SQL操作

審計日誌類別中的其他操作databrickssql

  • 動作名稱commandSubmit,在向Databricks SQL提交命令時運行。

    請求參數:

    • commandText:用戶指定的SQL語句或命令。

    • warehouseId: SQL倉庫ID。

    • commandId:命令ID。

  • 動作名稱commandFinish,該命令在命令完成或命令取消時運行。

    請求參數:

    • warehouseId: SQL倉庫ID。

    • commandId:命令ID。

    檢查響應命令結果相關的附加信息字段。

    • statusCode—HTTP響應碼。如果是一般錯誤,則誤差為400。

    • errorMessage——錯誤消息。

      請注意

      在某些情況下,對於某些長時間運行的命令,errorMessage字段不能在失敗時填充。

    • 結果這個字段是空的

啟用/禁用詳細審計日誌

  1. 作為一個管理員,轉到Databricks管理控製台

  2. 點擊工作空間設置

  3. 旁邊詳細審計日誌,啟用或禁用該特性。

當啟用或禁用詳細日誌記錄時,將在類別中發出可審計事件工作空間用行動workspaceConfKeys.的workspaceConfKeys請求參數是enableVerboseAuditLogs.請求參數workspaceConfValues真正的(功能啟用)或(功能禁用)。

配置審計日誌傳遞

作為Databricks帳戶所有者(或帳戶管理員,如果您使用E2帳戶),您可以配置以JSON文件格式將審計日誌低延遲交付到AWS S3存儲桶,在那裏您可以將數據用於使用情況分析.Databricks為帳戶中的每個工作空間提供單獨的JSON文件,並為帳戶級事件提供單獨的文件。

在初始設置或其他日誌交付配置更改之後,預計在更改生效之前會有最多一小時的延遲。在日誌交付開始後,可審計事件通常在15分鍾內被記錄。有關文件命名、交付規則和模式,請參見審核交付細節和格式

用於配置審計日誌的低延遲傳遞的API是賬戶API 2.0,這與用於配置的API相同可計費的使用日誌交付

您可以選擇將日誌下發到其他AWS帳號,而不是您為下發日誌創建的IAM角色帳號。這提供了靈活性,例如從多個AWS帳戶設置工作區以交付到相同的S3桶。該選項需要配置S3桶策略,引用跨帳戶IAM角色。本文提供了說明和策略模板。

對日誌的訪問取決於您如何設置S3桶。Databricks將日誌發送到具有AWS內置功能的S3桶中BucketOwnerFullControl ACL罐頭因此,帳戶所有者和指定的人可以直接下載日誌。要支持新創建對象的桶所有權,必須設置桶的S3對象所有權設置為值桶業主首選

重要的

如果你把你的桶S3對象所有權設置為對象的作家,新的對象,如您的日誌仍然屬於上傳帳戶,默認情況下,該IAM角色是您創建並指定訪問您的桶。這將使訪問日誌變得困難,因為您不能從AWS控製台或作為桶所有者進行身份驗證的自動化工具訪問它們。

Databricks建議您回顧一下S3的安全最佳實踐有關如何保護桶中的數據不受不必要訪問的指導。

配置選項

如果要配置審計日誌下發,您有以下選項。

  • 如果在Databricks帳戶中有一個工作空間,請按照下麵幾節中的說明,為您的工作空間創建一個具有公共配置的配置對象。

  • 如果您在同一個Databricks帳戶中有多個工作區,您可以執行以下任何操作:

    • 為帳戶中的所有工作空間共享相同的配置(日誌傳遞S3桶和IAM角色)。這是惟一還可以交付帳戶級審計日誌的配置選項。這是默認選項。

    • 為帳戶中的每個工作空間使用單獨的配置。

    • 為不同的工作空間組使用單獨的配置,每個組共享一個配置。

  • 如果您有多個工作空間,每個工作空間都與一個單獨的Databricks帳戶相關聯,那麼您必須為每個帳戶創建惟一的存儲和憑證配置對象,但是您可以在這些配置對象之間重用S3桶或IAM角色。

請注意

即使您使用Account API配置日誌傳遞,您也可以為任何工作空間配置日誌傳遞,包括沒有使用Account API創建的工作空間。

高級流

審計日誌交付的高級流程:

  1. 配置存儲:在AWS中,新建AWS S3桶。使用Databricks API,調用Account API創建使用桶名的存儲配置對象。

    請注意

    如果需要將日誌下發到自己創建的IAM角色帳號以外的AWS帳號,則需要添加S3桶策略。此步驟不需要添加策略。

  2. 配置的憑證:在AWS中創建對應的AWS IAM角色。使用Databricks API,調用Account API創建一個憑證配置對象,該對象使用IAM角色的ARN。角色策略可以為S3桶中的日誌傳遞指定一個路徑前綴。如果您希望為共享S3桶但使用不同路徑前綴的不同工作空間進行日誌傳遞配置,則可以選擇定義一個IAM角色來包含多個路徑前綴。

  3. 可選cross-account支持如果需要將日誌下發到自己創建的IAM角色帳號以外的AWS帳號,則需要添加S3桶策略。該策略引用了上一步中創建的跨帳戶IAM角色的id。

  4. 調用日誌傳遞API:調用Account API創建日誌傳遞配置,該配置使用前麵步驟中的憑據和存儲配置對象。此步驟允許您指定是否要為帳戶中的所有工作區(當前和未來的工作區)或特定的一組工作區關聯日誌傳遞配置。有關帳戶級事件的列表,請參見審計事件

完成這些步驟後,就可以訪問JSON文件了。發貨地點為:

<-的名字>/<交付-路徑-前綴>/workspaceId= <workspaceId>/日期= <yyyy-毫米-dd>/auditlogs_<內部-id>。json

如果為整個帳戶配置審計日誌傳遞,則不與任何單個工作區關聯的帳戶級審計事件將被傳遞到workspaceId = 0分區。

每隔幾分鍾就會交付新的JSON文件,可能會覆蓋每個工作區的現有文件。在最初設置審計日誌傳遞時,可能需要一個小時才能開始日誌傳遞。在審計日誌交付開始後,可審計事件通常在15分鍾內被記錄。額外的配置更改通常需要一個小時才能生效。

有關訪問這些文件和使用Databricks分析它們的更多信息,請參見分析審計日誌

重要的

每個帳戶可用的日誌傳遞配置數量有一個限製(每個限製分別適用於每種日誌類型,包括計費使用和審計日誌)。您可以為每種類型創建最多兩個啟用的帳戶級交付配置(沒有工作空間過濾器的配置)。此外,您可以為每種日誌類型的每個工作空間創建並啟用兩個工作空間級別的交付配置,這意味著對於每種日誌類型不超過兩個交付配置,可以在工作空間過濾器中出現相同的工作空間ID。不能刪除日誌下發配置,但可以禁用該配置。您可以重新啟用已禁用的配置,但是如果它違反了前麵描述的限製,請求就會失敗。

需求

  • 帳戶所有者(或帳戶管理員,如果您是在E2帳戶)電郵地址及密碼,以使用api進行身份驗證。郵箱地址和密碼均區分大小寫。

  • 帳戶ID。對於平台的E2版本上的帳戶,從Beplay体育安卓版本賬戶控製台對於非e2帳戶,從您的使用選項卡概述.如果您找不到您的帳戶ID,請聯係您的Databricks代表。

如何對api進行身份驗證

本文中描述的api發布在accounts.cloud.www.eheci.com所有AWS區域部署的基本端點。

對API請求使用以下基URL:https://accounts.cloud.www.eheci.com/api/2.0/

這個REST API需要HTTP基本身份驗證,這涉及到設置HTTP報頭授權.在這篇文章中,用戶名指您的帳戶所有者(或帳戶admin,如果您是在E2帳戶)的電子郵件地址。郵件地址區分大小寫。有幾種方法可以向curl等工具提供憑證。

  • 在每個請求的頭中分別傳遞您的用戶名和帳戶密碼<用戶名>:<密碼>語法。

    例如:

    curl -X GET -u<用戶名>:<密碼>- h“application / json內容類型:“https://accounts.cloud.www.eheci.com/api/2.0/accounts/ <帳戶id > / <端點>”
  • 應用base64編碼<用戶名>:<密碼>字符串並直接在HTTP頭文件中提供:

    curl -X GET -H“application / json內容類型:- h授權:基本< base64-username-pw >”“https://accounts.cloud.www.eheci.com/api/2.0/accounts/ <帳戶id > / <端點>”
  • 創建一個. netrc文件,登錄,密碼屬性:

    機器accounts.cloud.www.eheci.com登錄<用戶名>密碼<密碼>

    來調用. netrc文件,使用- n在你的旋度命令:

    curl -n -X GET“https://accounts.cloud.www.eheci.com/api/2.0/accounts/ <帳戶id > /工作區”

    本文的示例使用這種身份驗證樣式。

有關完整的API參考,請參見賬戶API 2.0

步驟1:配置存儲

Databricks將日誌發送到您帳戶中的S3桶。您可以配置多個工作空間來使用單個S3 bucket,或者您可以定義不同的工作空間(或工作空間組)來使用不同的bucket。

此過程描述如何為帳戶中的一個或多個工作空間設置一個具有公共配置的配置對象。要為不同的工作空間使用不同的存儲位置,請對每個工作空間或工作空間組重複本文中的步驟。

  1. 中的說明創建S3桶AWS存儲配置

    重要的

    要將日誌發送到除Databricks工作空間使用的帳戶以外的AWS帳戶,必須添加S3桶策略。此步驟不需要添加桶策略。看到步驟3:可選的跨帳戶支持

  2. 創建一個Databricks存儲配置記錄,它表示新的S3桶。方法指定S3桶創建新的存儲配置API帖子/賬戶/ <帳戶id > /存儲配置).

    通過以下幾點:

    • storage_configuration_name:新的存儲配置名稱。

    • root_bucket_info:包含對象的JSON對象bucket_name包含S3桶名的字段。

    複製storage_configuration_id在響應體中返回的值。您將在後麵的步驟中使用它來創建日誌傳遞配置。

    例如:

    curl -X POST -n“https://accounts.cloud.www.eheci.com/api/2.0/accounts/ < databricks-account-id > /存儲配置- d”{:“storage_configuration_name databricks-workspace-storageconf-v1”," root_bucket_info ": {:“bucket_name my-company-example-bucket”} '

    回應:

    “storage_configuration_id”“< databricks-storage-config-id >”“account_id”“< databricks-account-id >”“root_bucket_info”“bucket_name”“my-company-example-bucket”},“storage_configuration_name”“databricks-workspace-storageconf-v1”“creation_time”1579754875555

步驟2:配置憑據

此過程描述如何為帳戶中的一個或多個工作空間設置一個具有公共配置的配置對象。要對不同的工作空間使用不同的憑據,請對每個工作空間或工作空間組重複本文中的過程。

請注意

為了使用不同的S3桶名,需要創建不同的IAM角色。

  1. 作為具有管理員權限的用戶登錄到AWS控製台,然後轉到服務。

  2. 單擊角色選項卡。

  3. 點擊創建角色

    1. 選擇受信任實體類型,點擊AWS服務

    2. 常見用例,點擊EC2

    3. 單擊下一個:權限按鈕。

    4. 單擊下一個:標簽按鈕。

    5. 單擊下一個:審查按鈕。

    6. 角色名字段,輸入角色名。

      角色名
    7. 點擊創建角色.將顯示角色列表。

  4. 在角色列表中,單擊創建的角色。

  5. 添加內聯策略。

    1. 在Permissions選項卡上,單擊添加內嵌策略

      內聯政策
    2. 在策略編輯器中,單擊JSON選項卡。

      JSON編輯器
    3. 複製此訪問策略並修改它。將策略中的以下值替換為您自己的配置值:

      • < s3-bucket-name >: AWS S3桶的桶名。

      • < s3-bucket-path-prefix >:(可選)S3桶中交付位置的路徑。如果未指定,則將日誌下發到桶的根目錄。該路徑必須與delivery_path_prefix爭論時調用日誌傳遞API

      “版本”“2012-10-17”“聲明”:[“效應”“允許”“行動”:[“s3: GetBucketLocation”),“資源”:[“攻擊:aws: s3::: < s3-bucket-name >”},“效應”“允許”“行動”:[“s3: propertynames”“s3: GetObject”“s3: DeleteObject”“s3: PutObjectAcl”“s3: AbortMultipartUpload”),“資源”:[“攻擊:aws: s3::: < s3-bucket-name > / < s3-bucket-path-prefix > /”“攻擊:aws: s3::: < s3-bucket-name > / < s3-bucket-path-prefix > / *”},“效應”“允許”“行動”:[“s3: ListBucket”“s3: ListMultipartUploadParts”“s3: ListBucketMultipartUploads”),“資源”“攻擊:aws: s3::: < s3-bucket-name >”“條件”: {“StringLike”: {“s3:前綴”:[“< s3-bucket-path-prefix >”“< s3-bucket-path-prefix > / *”

      您可以自定義路徑前綴的策略使用:

      • 如果不想使用桶路徑前綴,請刪除< s3-bucket-path-prefix > /(包括最後的斜杠)。

      • 如果你想要為共享S3桶但使用不同路徑前綴的不同工作區配置日誌傳遞,你可以定義一個IAM角色來包含多個路徑前綴。該策略有兩個單獨的部分引用< s3-bucket-path-prefix >.在每種情況下,複製引用路徑前綴的相鄰兩行。對於每個新的路徑前綴重複每對行,例如:

      “資源”:[“攻擊:aws: s3::: < mybucketname > /現場小組”“攻擊:aws: s3::: < mybucketname > /現場小組/ *”“攻擊:aws: s3::: < mybucketname > /財務團隊/”“攻擊:aws: s3::: < mybucketname > /財務團隊/ *”
    4. 點擊審查政策

    5. 的名字字段,輸入策略名稱。

    6. 點擊創建政策

    7. 如果你使用服務控製策略若要在AWS帳戶級別拒絕某些操作,請確保sts: AssumeRole是白名單,所以Databricks可以承擔跨帳戶的角色。

  6. 在角色彙總頁麵,單擊信任關係選項卡。

  7. 將此訪問策略粘貼到編輯器中,並用您自己的配置值替換策略中的以下值:

    < databricks-account-id >-您的Databricks帳戶ID。

    “版本”“2012-10-17”“聲明”:[“效應”“允許”“校長”: {“AWS”“攻擊:aws:我::414351767826:角色/ SaasUsageDeliveryRole-prod-IAMRole-3PLHICCRR1TK”},“行動”“sts: AssumeRole”“條件”: {“StringEquals”: {“sts: ExternalId”:[“< databricks-account-id >”
  8. 在角色摘要中,複製的角色是把它保存到以後的步驟中。

    的角色是
  9. 為AWS角色創建Databricks憑據配置ID。調用創建憑據配置API帖子/賬戶/ <帳戶id > /憑證).該請求建立跨帳戶信任,並返回在創建新工作區時使用的引用ID。

    取代<帳戶id >與您的Databricks帳戶ID。在請求體中:

    • credentials_name到您帳戶內唯一的名稱。

    • aws_credentials屬性的對象sts_role財產。對象必須指定role_arn為你所創造的角色。

    響應體將包括一個credentials_id字段,它是創建新工作區所需的Databricks憑證配置ID。複製此字段,以便在後麵的步驟中使用它創建日誌傳遞配置。

    例如:

    curl -X POST -n“https://accounts.cloud.www.eheci.com/api/2.0/accounts/ < databricks-account-id > /憑證”- d”{:“credentials_name databricks-credentials-v1”," aws_credentials ": {" sts_role ": {:“role_arn攻擊:aws:我::< aws-account-id >: / my-company-example-role”角色} '

    示例響應:

    “credentials_id”“< databricks-credentials-id >”“account_id”“< databricks-account-id >”“aws_credentials”“sts_role”“role_arn”“攻擊:aws:我::< aws-account-id >: / my-company-example-role”角色“external_id”“< databricks-account-id >”},“credentials_name”“databricks-credentials-v1”“creation_time”1579753556257

    複製credentials_id字段,以供以後使用。

步驟3:可選的跨帳戶支持

如果您的S3桶與日誌下發的IAM角色在同一個AWS帳戶中,請跳過此步驟。

要將日誌發送到除Databricks工作空間使用的帳戶以外的AWS帳戶,您必須添加S3桶策略,如本步驟所示。該策略引用了上一步中創建的跨帳戶IAM角色的id。

  1. 在AWS Console中,轉到S3服務。

  2. 單擊桶名。

  3. 單擊權限選項卡。

  4. 單擊桶的政策按鈕。

    桶政策按鈕
  5. 複製並修改此桶策略。

    取代< s3-bucket-name >使用S3桶名。取代< customer-iam-role-id >輸入新創建IAM角色的角色ID。取代< s3-bucket-path-prefix >使用您想要的桶路徑前綴。有關自定義路徑前綴的信息,請參閱策略示例後麵的說明。

    “版本”“2012-10-17”“聲明”“效應”“允許”“校長”“AWS”“攻擊:aws:我::< customer-iam-role-id >”},“行動”“s3: GetBucketLocation”“資源”“攻擊:aws: s3::: < s3-bucket-name >”},“效應”“允許”“校長”“AWS”“攻擊:aws:我::< customer-iam-role-id >”},“行動”“s3: propertynames”“s3: GetObject”“s3: DeleteObject”“s3: PutObjectAcl”“s3: AbortMultipartUpload”“s3: ListMultipartUploadParts”),“資源”“攻擊:aws: s3::: < s3-bucket-name > / < s3-bucket-path-prefix > /”“攻擊:aws: s3::: < s3-bucket-name > / < s3-bucket-path-prefix > / *”},“效應”“允許”“校長”“AWS”“攻擊:aws:我::< customer-iam-role-id >”},“行動”“s3: ListBucket”“資源”“攻擊:aws: s3::: < s3-bucket-name >”“條件”“StringLike”“s3:前綴”“< s3-bucket-path-prefix >”“< s3-bucket-path-prefix > / *”

    您可以自定義使用路徑前綴的策略:

    • 如果不想使用桶路徑前綴,請刪除< s3-bucket-path-prefix > /(包括最後的斜杠)。

    • 如果您想要為多個共享相同S3桶但使用不同路徑前綴的工作區配置日誌傳遞,您可以定義一個IAM角色來包含多個路徑前綴。策略引用由兩部分組成< s3-bucket-path-prefix >.在每個位置,複製引用路徑前綴的相鄰兩行。為每個新路徑前綴重複每對行。例如:

      “資源”:[“攻擊:aws: s3::: < mybucketname > /現場小組”“攻擊:aws: s3::: < mybucketname > /現場小組/ *”“攻擊:aws: s3::: < mybucketname > /財務團隊/”“攻擊:aws: s3::: < mybucketname > /財務團隊/ *”

步驟4:調用日誌傳遞API

要配置日誌傳遞,請調用日誌傳遞配置API帖子/賬戶/ <帳戶id > /日誌交付).

您需要以下在前麵步驟中複製的值:

  • credentials_id:您的Databricks憑據配置ID,它表示您的跨帳戶角色憑據。

  • storage_configuration_id:您的Databricks存儲配置ID,它代表您的根S3桶。

還要設置以下字段:

  • log_type:總是設置為AUDIT_LOGS

  • output_format:總是設置為JSON.有關模式,請參見審計日誌模式

  • delivery_path_prefix:(可選)設置為路徑前綴。這必須與您在角色策略中使用的路徑前綴匹配。交付路徑為< bucket名> / < delivery-path-prefix > / workspaceId = < workspaceId > /日期= < yyyy-mm-dd > / auditlogs_ <內部id > . json.如果為整個帳戶配置審計日誌傳遞,則不與任何單個工作區關聯的帳戶級審計事件將被傳遞到workspaceId = 0分區。

  • workspace_ids_filter:(可選)設置要下發的日誌的工作空間id數組。默認情況下,工作空間篩選字段為空,日誌傳遞應用於帳戶級別,為您的帳戶中的所有工作空間傳遞工作空間級別的日誌,以及帳戶級別的日誌。您可以選擇將此字段設置為一個工作區id數組(每個都是一個int64)應該應用日誌傳遞,在這種情況下,隻傳遞與指定工作空間相關的工作空間級別的日誌。有關帳戶級事件的列表,請參見審計事件

    如果您計劃為不同的工作空間使用不同的日誌傳遞配置,請顯式設置此字段。請注意,提到特定工作空間的交付配置將不適用於將來創建的新工作空間,並且交付將不包括帳戶級別的日誌。

    對於某些類型的Databricks部署,每個帳戶ID隻有一個工作空間,因此這個字段是不必要的。

重要的

每個帳戶可用的日誌傳遞配置的數量是有限製的(每個限製分別適用於每種日誌類型,包括計費使用和審計日誌)。您可以為每種類型創建最多兩個啟用的帳戶級交付配置(沒有工作空間過濾器的配置)。此外,您可以為每個日誌類型的每個工作空間創建兩個啟用的工作空間級傳遞配置,這意味著對於每個日誌類型不超過兩個傳遞配置,可以在工作空間過濾器中出現相同的工作空間ID。不能刪除日誌下發配置,但可以禁用該配置。您可以重新啟用已禁用的配置,但是如果它違反了前麵描述的限製,請求就會失敗。

例如:

curl -X POST -n“https://accounts.cloud.www.eheci.com/api/2.0/accounts/ < databricks-account-id > /日誌交付”- d”{" log_delivery_configuration ": {:“log_type AUDIT_LOGS”,“config_name”:“審計日誌配置”,:“output_format JSON”,:“credentials_id < databricks-credentials-id >”,:“storage_configuration_id < databricks-storage-config-id >”,:“delivery_path_prefix auditlogs-data”,“workspace_ids_filter”:(6383650456894062,4102272838062927} '

示例響應:

“log_delivery_configuration”“config_id”“< config-id >”“config_name”“審計日誌配置”“log_type”“AUDIT_LOGS”“output_format”“JSON”“account_id”“<帳戶id >”“credentials_id”“< databricks-credentials-id >”“storage_configuration_id”“< databricks-storage-config-id >”“workspace_ids_filter”63836504568940624102272838062927),“delivery_path_prefix”“auditlogs-data”“狀態”“啟用”“creation_time”1591638409000“update_time”1593108904000“log_delivery_status”“狀態”“創建”“消息”日誌下發配置創建成功。狀態將在第一次交付嚐試後更新。”

日誌傳遞api的附加特性

日誌api交付有附加功能。有關詳細信息,請參閱API參考文檔。

額外的操作包括:

日誌傳遞配置狀態可以在API響應的log_delivery_status對象。與log_delivery_status,您可以查看狀態(成功或失敗)和最後一次嚐試或成功交付的時間。

重要的

每個帳戶可用的日誌傳遞配置數量有一個限製(每個限製分別適用於每種日誌類型,包括計費使用和審計日誌)。您可以為每種類型創建最多兩個啟用的帳戶級交付配置(沒有工作空間過濾器的配置)。此外,您可以為每個日誌類型的每個工作空間創建兩個啟用的工作空間級傳遞配置,這意味著對於每個日誌類型不超過兩個傳遞配置,可以在工作空間過濾器中出現相同的工作空間ID。不能刪除日誌下發配置,但可以禁用該配置。您可以重新啟用已禁用的配置,但是如果它違反了前麵描述的限製,請求就會失敗。

審核交付細節和格式

一旦為您的帳戶啟用了日誌記錄,Databricks就會自動開始以人類可讀的格式定期向您的交付位置發送審計日誌。

  • 延遲:在初始設置或其他配置更改之後,更改生效之前可能會有一些延遲。對於審計日誌交付的初始設置,開始日誌交付最多需要一個小時。在日誌交付開始後,可審計事件通常在15分鍾內被記錄。額外的配置更改通常需要一個小時才能生效。

  • 加密: Databricks使用Amazon S3服務端加密方式對審計日誌進行加密。

  • 格式: Databricks提供JSON格式的審計日誌。

  • 位置:送貨地點為< bucket名> / < delivery-path-prefix > / workspaceId = < workspaceId > /日期= < yyyy-mm-dd > / auditlogs_ <內部id > . json.每隔幾分鍾就會交付新的JSON文件,可能會覆蓋現有的文件。交付路徑被定義為配置的一部分。與任何單一工作空間不關聯的帳戶級審計事件將被交付到workspaceId = 0分區,如果您為整個帳戶配置了審計日誌傳遞。

    • Databricks可以在任何時候覆蓋您的bucket中交付的日誌文件。如果文件被覆蓋,現有的內容將保留,但是可能會有用於更多可審計事件的附加行。

    • 重寫確保了精確一次的語義,而不需要對您的帳戶進行讀取或刪除訪問。

審計日誌模式

審計日誌記錄模式如下所示。

  • 版本:審計日誌格式的模式版本。

  • 時間戳:動作的UTC時間戳。

  • workspaceId:此事件關聯的工作區ID。對於不應用於任何工作區的帳戶級事件,可以將其設置為“0”。

  • sourceIPAddress:源請求IP地址。

  • userAgent:用於發出請求的瀏覽器或API客戶端。

  • sessionId:動作的會話ID。

  • userIdentity:發出請求的用戶信息。

    • 電子郵件:用戶郵箱地址。

  • :記錄請求的服務。

  • actionName:操作,如登錄、注銷、讀、寫等。

  • requestId:唯一請求ID。

  • requestParams:被審計事件使用的參數鍵值對。

  • 響應:對請求的響應。

    • errorMessage:發生錯誤時的錯誤信息。

    • 結果:請求的結果。

    • statusCode:表示請求是否成功的HTTP狀態碼。

  • auditLevel:指定這是否是一個工作空間級別的事件(WORKSPACE_LEVEL)或帳戶級事件(ACCOUNT_LEVEL).

  • accountId:該Databricks帳號的帳號ID。

審計事件

而且actionName屬性在審計日誌記錄中標識審計事件。命名約定遵循Databricks REST API參考

工作空間級別的審計日誌可用於以下服務:

  • 賬戶

  • 集群

  • clusterPolicies

  • dbfs

  • 精靈

  • globalInitScripts

  • iamRole

  • instancePools

  • 工作

  • mlflowExperiment

  • 筆記本

  • 回購

  • 秘密

  • databrickssql

  • sqlPermissions,其中包含在啟用表acl時對表訪問的所有審計日誌。

  • ssh

  • 工作空間

帳戶級審計日誌可用於以下服務:

  • accountBillableUsage:訪問該帳戶的計費使用。

  • logDelivery:日誌交付配置,如計費使用或審計日誌。

  • ssoConfigBackend:帳號的單點登錄設置。

  • accountsManager:在帳戶控製台中執行的操作。

帳戶級事件具有workspaceId字段設置為有效的工作空間ID,如果它們引用與工作空間相關的事件,如創建或刪除工作空間。如果它們沒有與任何工作區關聯,則workspaceId字段設置為0。帳戶級審計日誌僅針對具有空工作空間篩選字段的帳戶級交付配置(為帳戶中的所有事件交付審計日誌)。

請注意

  • 如果操作花費很長時間,則請求和響應將分別記錄,但請求和響應對具有相同的日誌requestId

  • 除掛載相關操作外,Databricks的審計日誌中不包含與dbfs相關的操作。我們建議您在S3中設置服務器訪問日誌記錄,它可以記錄與IAM角色相關的對象級操作。如果將IAM角色映射給Databricks用戶,則Databricks用戶無法共享IAM角色。

  • 自動操作(如由於自動伸縮而調整集群大小或由於調度而啟動作業)由用戶執行係統用戶

請求參數

字段中的請求參數requestParams下麵列出了每個支持的服務和操作,按工作空間級事件和帳戶級事件分組。

requestParams字段會被截斷。如果其JSON表示的大小超過100 KB,值將被截斷,而字符串...截斷被附加到截斷的條目。在截斷的映射仍然大於100kb的極少數情況下,單個截斷鍵的值為空。

工作空間級別的審計日誌事件

服務

行動

請求參數

賬戶

添加

[" targetUserName”、“端點”、“targetUserId”)

addPrincipalToGroup

[" targetGroupId ", " endpoint ", " targetUserId ", " targetGroupName ", " targetUserName "]

changePassword

[" newPasswordSource ", " targetUserId ", " serviceSource ", " wasPasswordChanged ", " userId "]

createGroup

["端點”、“targetGroupId”、“targetGroupName”)

刪除

[" targetUserId”、“targetUserName”、“端點”)

garbageCollectDbToken

[" tokenExpirationTime”、“標識”)

generateDbToken

(“標識”、“tokenExpirationTime”)

jwtLogin

(“用戶”)

登錄

(“用戶”)

注銷

(“用戶”)

removeAdmin

[" targetUserName”、“端點”、“targetUserId”)

removeGroup

[" targetGroupId”、“targetGroupName”、“端點”)

resetPassword

[" serviceSource ", " userId ", " endpoint ", " targetUserId ", " targetUserName ", " wasPasswordChanged ", " newPasswordSource "]

revokeDbToken

["標識"]

samlLogin

(“用戶”)

setAdmin

["端點”、“targetUserName”、“targetUserId”)

tokenLogin

[" tokenId”、“用戶”)

validateEmail

["端點”、“targetUserName”、“targetUserId”)

集群

changeClusterAcl

[" shardName ", " aclPermissionSet ", " targetUserId ", " resourceId "]

創建

[" cluster_log_conf ", " num_workers ", " enable_elastic_disk ", " driver_node_type_id ", " start_cluster ", " docker_image ", " ssh_public_keys ", " aws_attributes ", " acl_path_prefix ", " node_type_", " instance_pool_id ", " spark_env_vars ", " init_scripts ", " spark_version ", " cluster_source ", " autotermination_minutes ", " cluster_name ", " autoscale ", " custom_tags ", " cluster_creator ", " enable_local_disk_encryption ", " idempotency_token ", " spark_conf ", " organization_id ", " no_driver_daemon ", " user_id "]

createResult

[" clusterName ", " clusterState ", " clusterId ", " clusterWorkers ", " clusterOwnerUserId "]

刪除

[" cluster_id "]

deleteResult

[" clusterWorkers ", " clusterState ", " clusterId ", " clusterOwnerUserId ", " clusterName "]

編輯

[" spark_env_vars ", " no_driver_daemon ", " enable_elastic_disk ", " aws_attributes ", " driver_node_type_id ", " custom_tags ", " cluster_name ", " spark_conf ", " ssh_public_keys ", " autotermination_minutes ", " cluster_source ", " docker_image ", " enable_local_disk_encryption ", " cluster_id ", " spark_version ", " autoscale ", " cluster_log_conf ", " instance_pool_id ", " num_workers ", " init_scripts ", " node_type_id "]

permanentDelete

[" cluster_id "]

調整

[" cluster_id”、“num_workers”、“自動定量”)

resizeResult

[" clusterWorkers ", " clusterState ", " clusterId ", " clusterOwnerUserId ", " clusterName "]

重新啟動

[" cluster_id "]

restartResult

[" clusterId ", " clusterState ", " clusterName ", " clusterOwnerUserId ", " clusterWorkers "]

開始

[" init_scripts_safe_mode”、“cluster_id”)

startResult

[" clusterName ", " clusterState ", " clusterWorkers ", " clusterOwnerUserId ", " clusterId "]

clusterPolicies

創建

["名稱")

編輯

[" policy_id”、“名稱”)

刪除

[" policy_id "]

changeClusterPolicyAcl

[" shardName ", " targetUserId ", " resourceId ", " aclPermissionSet "]

dbfs

addBlock

(“處理”、“data_length”)

創建

(“路徑”、“bufferSize”、“覆蓋”)

刪除

(“遞歸”、“路徑”)

getSessionCredentials

(“掛載點”)

mkdir

(“路徑”)

(“掛載點”、“所有者”)

移動

[" dst ", " source_path ", " src ", " destination_path "]

(“路徑”,“覆蓋”)

卸載

(“掛載點”)

精靈

databricksAccess

[" duration ", " approver ", " reason ", " authType ", " user "]

globalInitScripts

創建

[" name ", " position ", " script-SHA256 ", " enabled "]

更新

[" script_id ", " name ", " position ", " script-SHA256 ", " enabled "]

刪除

[" script_id "]

addPrincipalToGroup

[" user_name”、“parent_name”)

createGroup

[" group_name "]

getGroupMembers

[" group_name "]

removeGroup

[" group_name "]

iamRole

changeIamRoleAcl

[" targetUserId ", " shardName ", " resourceId ", " aclPermissionSet "]

instancePools

changeInstancePoolAcl

[" shardName ", " resourceId ", " targetUserId ", " aclPermissionSet "]

創建

[" enable_elastic_disk ", " preloaded_spark_versions ", " idle_instance_autotermination_minutes ", " instance_pool_name ", " node_type_id ", " custom_tags ", " max_capacity ", " min_idle_instances ", " aws_attributes "]

刪除

[" instance_pool_id "]

編輯

[" instance_pool_name ", " idle_instance_autotermination_minutes ", " min_idle_instances ", " preloaded_spark_versions ", " max_capacity ", " enable_elastic_disk ", " node_type_id ", " instance_pool_id ", " aws_attributes "]

工作

取消

[" run_id "]

cancelAllRuns

[" job_id "]

changeJobAcl

[" shardName ", " aclPermissionSet ", " resourceId ", " targetUserId "]

創建

[" spark_jar_task ", " email_notifications ", " notebook_task ", " spark_submit_task ", " timeout_seconds ", " libraries ", " name ", " spark_python_task ", " job_type ", " new_cluster ", " existing_cluster_id ", " max_retries ", " schedule "]

刪除

[" job_id "]

deleteRun

[" run_id "]

重置

[" job_id”、“new_settings”)

resetJobAcl

(“撥款”、“job_id”)

runFailed

[" jobClusterType ", " jobTriggerType ", " jobId ", " jobTaskType ", " runId ", " jobTerminalState ", " idInJob ", " orgId "]

runNow

[" notebook_params ", " job_id ", " jar_params ", " workflow_context "]

runSucceeded

[" idInJob ", " jobId ", " jobTriggerType ", " orgId ", " runId ", " jobClusterType ", " jobTaskType ", " jobTerminalState "]

setTaskValue

[" run_id”、“關鍵”)

submitRun

[" shell_command_task ", " run_name ", " spark_python_task ", " existing_cluster_id ", " notebook_task ", " timeout_seconds ", " libraries ", " new_cluster ", " spark_jar_task "]

更新

[" fields_to_remove”、“job_id”、“new_settings”)

mlflowExperiment

deleteMlflowExperiment

[" experimentId”、“路”、“experimentName”)

moveMlflowExperiment

[" newPath”、“experimentId”、“媒介”)

restoreMlflowExperiment

[" experimentId”、“路”、“experimentName”)

mlflowModelRegistry

listModelArtifacts

[" name ", " version ", " path ", " page_token "]

getModelVersionSignedDownloadUri

["名稱”、“版本”、“路徑”)

createRegisteredModel

(“名字”、“標簽”)

deleteRegisteredModel

["名稱")

renameRegisteredModel

(“名字”,“new_name”)

setRegisteredModelTag

["名稱”、“關鍵”、“價值”)

deleteRegisteredModelTag

(“名字”,“關鍵”)

createModelVersion

[" name ", " source ", " run_id ", " tags ", " run_link "]

deleteModelVersion

(“名字”、“版本”)

getModelVersionDownloadUri

(“名字”、“版本”)

setModelVersionTag

[" name ", " version ", " key ", " value "]

deleteModelVersionTag

["名稱”、“版本”、“關鍵”)

createTransitionRequest

["名稱”、“版本”、“階段”)

deleteTransitionRequest

["名稱","版本","舞台","創作者"]

approveTransitionRequest

[" name ", " version ", " stage ", " archive_existing_versions "]

rejectTransitionRequest

["名稱”、“版本”、“階段”)

transitionModelVersionStage

[" name ", " version ", " stage ", " archive_existing_versions "]

transitionModelVersionStageDatabricks

[" name ", " version ", " stage ", " archive_existing_versions "]

createComment

(“名字”、“版本”)

updateComment

[" id "]

deleteComment

[" id "]

筆記本

attachNotebook

(“路徑”、“clusterId”、“notebookId”)

createNotebook

[" notebookId”、“路徑”)

deleteFolder

(“路徑”)

deleteNotebook

[" notebookId”、“notebookName”、“路徑”)

detachNotebook

[" notebookId”、“clusterId”、“路徑”)

downloadLargeResults

[" notebookId”、“notebookFullPath”)

downloadPreviewResults

[" notebookId”、“notebookFullPath”)

importNotebook

(“路徑”)

moveNotebook

[" newPath”、“媒介”、“notebookId”)

renameNotebook

[" newName ", " oldName ", " parentPath ", " notebookId "]

restoreFolder

(“路徑”)

restoreNotebook

(“路徑”、“notebookId”、“notebookName”)

runCommand(隻詳細審計日誌

[" notebookId ", " executionTime ", " status ", " commandId ", " commandText "(見細節)]

takeNotebookSnapshot

(“路徑”)

回購

createRepo

[" url”、“提供者”、“路徑”)

updateRepo

[" id ",“分支”,“標簽”,“git_url”,“git_provider”)

getRepo

[" id "]

listRepos

[" path_prefix”、“next_page_token”)

deleteRepo

[" id "]

[" id "]

commitAndPush

[" id ", " message ", " files ", " checkSensitiveToken "]

checkoutBranch

[" id ",“分支”]

丟棄

[" id ",“file_paths”]

秘密

createScope

["範圍"]

deleteScope

["範圍"]

deleteSecret

(“關鍵”、“範圍”)

getSecret

(“範圍”、“關鍵”)

listAcls

["範圍"]

listSecrets

["範圍"]

putSecret

[" string_value”、“範圍”、“關鍵”)

databrickssql

addDashboardWidget

[" dashboardId”、“widgetId”)

cancelQueryExecution

[" queryExecutionId "]

changeWarehouseAcls

[" aclPermissionSet ", " resourceId ", " shardName ", " targetUserId "]

changePermissions

[" granteeAndPermission”、“objectId”、“objectType”)

cloneDashboard

[" dashboardId "]

commandSubmit(隻詳細審計日誌

[" orgId ", " sourceIpAddress ", " timestamp ", " userAgent ", " userIdentity ", " shardName "(參見細節)]

commandFinish(隻詳細審計日誌

[" orgId ", " sourceIpAddress ", " timestamp ", " userAgent ", " userIdentity ", " shardName "(參見細節)]

createAlertDestination

[" alertDestinationId”、“alertDestinationType”)

createDashboard

[" dashboardId "]

createDataPreviewDashboard

[" dashboardId "]

createWarehouse

[" auto_resume ", " auto_stop_mins ", " channel ", " cluster_size ", " conf_pairs ", " custom_cluster_confs ", " enable_databricks_compute ", " enable_photon ", " enable_serverless_compute ", " instance_profile_arn ", " max_num_clusters ", " min_num_clusters ", " name ", " size ", " spot_instance_policy ", " tags ", " test_overrides "]

createQuery

[" queryId "]

createQueryDraft

[" queryId "]

createQuerySnippet

[" querySnippetId "]

createRefreshSchedule

[" alertId”、“dashboardId”、“refreshScheduleId”)

createSampleDashboard

[" sampleDashboardId "]

createSubscription

[" dashboardId”、“refreshScheduleId”、“subscriptionId”)

createVisualization

[" queryId”、“visualizationId”)

deleteAlert

[" alertId "]

deleteAlertDestination

[" alertDestinationId "]

deleteDashboard

[" dashboardId "]

deleteDashboardWidget

[" widgetId "]

deleteWarehouse

[" id "]

deleteExternalDatasource

[" dataSourceId "]

deleteQuery

[" queryId "]

deleteQueryDraft

[" queryId "]

deleteQuerySnippet

[" querySnippetId "]

deleteRefreshSchedule

[" alertId”、“dashboardId”、“refreshScheduleId”)

deleteSubscription

[" subscriptionId "]

deleteVisualization

[" visualizationId "]

downloadQueryResult

["文件類型”、“queryId”、“queryResultId”)

editWarehouse

[" auto_stop_mins ", " channel ", " cluster_size ", " confs ", " enable_photon ", " enable_serverless_compute ", " id ", " instance_profile_arn ", " max_num_clusters ", " min_num_clusters ", " name ", " spot_instance_policy ", " tags "]

executeAdhocQuery

[" dataSourceId "]

executeSavedQuery

[" queryId "]

executeWidgetQuery

[" widgetId "]

favoriteDashboard

[" dashboardId "]

favoriteQuery

[" queryId "]

forkQuery

[" originalQueryId”、“queryId”)

listQueries

[" filter_by ", " include_metrics ", " max_results ", " page_token "]

moveDashboardToTrash

[" dashboardId "]

moveQueryToTrash

[" queryId "]

muteAlert

[" alertId "]

publishBatch

["狀態")

publishDashboardSnapshot

[" dashboardId”、“hookId”、“subscriptionId”)

restoreDashboard

[" dashboardId "]

restoreQuery

[" queryId "]

setWarehouseConfig

[" data_access_config ", " enable_serverless_compute ", " instance_profile_arn ", " security_policy ", " serverless_agreement ", " sql_configuration_parameters ", " try_create_databricks_managed_starter_warehouse "]

snapshotDashboard

[" dashboardId "]

startWarehouse

[" id "]

stopWarehouse

[" id "]

subscribeAlert

[" alertId”、“destinationId”)

transferObjectOwnership

[" newOwner”、“objectId”、“objectType”)

unfavoriteDashboard

[" dashboardId "]

unfavoriteQuery

[" queryId "]

unmuteAlert

[" alertId "]

unsubscribeAlert

[" alertId”、“subscriberId”)

updateAlert

[" alertId”、“queryId”)

updateAlertDestination

[" alertDestinationId "]

updateDashboard

[" dashboardId "]

updateDashboardWidget

[" widgetId "]

updateOrganizationSetting

[" has_configured_data_access”、“has_explored_sql_warehouses”、“has_granted_permissions”)

updateQuery

[" queryId "]

updateQueryDraft

[" queryId "]

updateQuerySnippet

[" querySnippetId "]

updateRefreshSchedule

[" alertId”、“dashboardId”、“refreshScheduleId”)

updateVisualization

[" visualizationId "]

sqlPermissions

createSecurable

(“可獲得的”)

grantPermission

(“許可”)

removeAllPermissions

(“可獲得的”)

requestPermissions

["請求"]

revokePermission

(“許可”)

showPermissions

["可到手的”、“主要”)

ssh

登錄

[" containerId ", " userName ", " port ", " publicKey ", " instanceId "]

注銷

["用戶名”、“containerId”、“instanceId”)

工作空間

changeWorkspaceAcl

[" shardName ", " targetUserId ", " aclPermissionSet ", " resourceId "]

fileCreate

(“路徑”)

fileDelete

(“路徑”)

moveWorkspaceNode

[" destinationPath”、“路徑”)

purgeWorkspaceNodes

[" treestoreId "]

workspaceConfEdit(工作空間級別的設置更改)

[" workspaceConfKeys”(例如,詳細審計日誌使用價值enableVerboseAuditLogs)、“workspaceConfValues”(例如,for詳細審計日誌這是真正的

workspaceExport

[" workspaceExportFormat”、“notebookFullPath”)

帳號級審計日誌事件

服務

行動

請求參數

accountBillableUsage

getAggregatedUsage

[" account_id ", " window_size ", " start_time ", " end_time ", " meter_name ", " workspace_ids_filter "]

getDetailedUsage

[" account_id”、“start_month”、“end_month”、“with_pii”)

賬戶

登錄

(“用戶”)

gcpWorkspaceBrowserLogin

(“用戶”)

oidcBrowserLogin

(“用戶”)

注銷

(“用戶”)

accountsManager

updateAccount

[" account_id”、“賬戶”)

changeAccountOwner

[" account_id”、“first_name”、“last_name”,“電子郵件”)

consolidateAccounts

[" target_account_id”、“account_ids_to_consolidate”)

updateSubscription

[" account_id”、“subscription_id”、“訂閱”)

listSubscriptions

[" account_id "]

createWorkspaceConfiguration

(“工作區”)

getWorkspaceConfiguration

[" account_id”、“workspace_id”)

listWorkspaceConfigurations

[" account_id "]

updateWorkspaceConfiguration

[" account_id”、“workspace_id”)

deleteWorkspaceConfiguration

[" account_id”、“workspace_id”)

acceptTos

[" workspace_id "]

發送到

[" account_id”、“workspace_id”)

createCredentialsConfiguration

(“憑證”)

getCredentialsConfiguration

[" account_id”、“credentials_id”)

listCredentialsConfigurations

[" " account_id“”)

deleteCredentialsConfiguration

[" account_id”、“credentials_id”)

createStorageConfiguration

[" " storage_configuration“”)

getStorageConfiguration

[" account_id”、“storage_configuration_id”)

listStorageConfigurations

[" account_id "]

deleteStorageConfiguration

[" account_id”、“storage_configuration_id”)

createNetworkConfiguration

(“網絡”)

getNetworkConfiguration

[" account_id”、“network_id”)

listNetworkConfigurations

[" account_id "]

deleteNetworkConfiguration

[" account_id”、“network_id”)

createCustomerManagedKeyConfiguration

[" " customer_managed_key“”)

getCustomerManagedKeyConfiguration

[" account_id”、“customer_managed_key_id”)

listCustomerManagedKeyConfigurations

[" account_id "]

deleteCustomerManagedKeyConfiguration

[" account_id”、“customer_managed_key_id”)

listWorkspaceEncryptionKeyRecords

[" account_id”、“workspace_id”)

listWorkspaceEncryptionKeyRecordsForAccount

[" account_id "]

createVpcEndpoint

[" vpc_endpoint "]

getVpcEndpoint

[" account_id”、“vpc_endpoint_id”)

listVpcEndpoints

[" account_id "]

deleteVpcEndpoint

[" account_id”、“vpc_endpoint_id”)

createPrivateAccessSettings

[" private_access_settings "]

getPrivateAccessSettings

[" account_id”、“private_access_settings_id”)

listPrivateAccessSettingss

[" account_id "]

deletePrivateAccessSettings

[" account_id”、“private_access_settings_id”)

logDelivery

createLogDeliveryConfiguration

[" account_id”、“config_id”)

updateLogDeliveryConfiguration

[" config_id”、“account_id”、“地位”)

getLogDeliveryConfiguration

[" log_delivery_configuration "]

listLogDeliveryConfigurations

[" account_id ", " storage_configuration_id ", " credentials_id ", " status "]

ssoConfigBackend

創建

[" account_id”、“sso_type”、“配置”)

更新

[" account_id”、“sso_type”、“配置”)

得到

[" account_id”、“sso_type”)

分析審計日誌

您可以使用Databricks分析審計日誌。下麵的示例使用日誌報告Databricks訪問和Apache Spark版本。

將審計日誌加載為DataFrame,並將DataFrame注冊為臨時表。看到使用Amazon S3中的數據欲了解詳細指南。

瓦爾df火花格式“json”).負載“s3a: / / bucketName /道路/ / auditLogs”dfcreateOrReplaceTempView“audit_logs”

列出訪問Databricks的用戶及其位置。

sql選擇截然不同的userIdentity電子郵件sourceIPAddressaudit_logs在哪裏“賬戶”actionName就像登錄“% %”

檢查使用的Apache Spark版本。

sql選擇requestParamsspark_versionaudit_logs在哪裏“集群”actionName“創造”集團通過requestParamsspark_version

檢查表數據訪問。

sql選擇audit_logs在哪裏“sqlPermissions”actionName“requestPermissions”