使用SCIM(遺留)通過IAM憑據傳遞訪問S3

預覽

此功能已在公共預覽

請注意

IAM憑據傳遞是一種遺留數據治理模型。Databricks建議您升級到Unity Catalog。Unity Catalog通過提供一個中央位置來管理和審計帳戶中多個工作區的數據訪問,從而簡化了數據的安全性和治理。看到什麼是Unity Catalog?

IAM憑據傳遞允許您使用登錄Databricks時使用的身份自動從Databricks集群驗證到S3桶。當您為您的集群啟用IAM憑據傳遞時,您在該集群上運行的命令可以使用您的身份讀取和寫入S3中的數據。IAM憑據傳遞與使用安全方法訪問S3桶相比有兩個關鍵好處實例配置文件

  • IAM證書透傳允許多個具有不同數據訪問策略的用戶共享一個Databricks集群訪問S3中的數據,同時保證數據的安全性。一個實例概要文件隻能與一個實例相關聯我的角色.這要求Databricks集群上的所有用戶共享該角色和該角色的數據訪問策略。

  • IAM證書傳遞將用戶與某個身份關聯起來。這反過來支持通過CloudTrail記錄S3對象。所有S3訪問都通過CloudTrail日誌中的ARN直接綁定到用戶。

需求

  • 優質及以上計劃

  • AWS管理員訪問權限:

    • Databricks部署的AWS帳戶中的IAM角色和策略。

    • S3桶的AWS帳戶。

    • 數據庫管理員訪問配置實例概要文件。

設置一個元實例概要文件

為了使用IAM憑據傳遞,您必須首先設置至少一個元實例概要來承擔您分配給用戶的IAM角色。

一個我的角色是一個AWS身份,其策略決定該身份在AWS中可以做什麼,不可以做什麼。一個實例配置文件是IAM角色的容器,當實例啟動時,您可以使用該容器將角色信息傳遞給EC2實例。實例概要文件允許您訪問Databricks集群中的數據,而無需訪問嵌入AWS密鑰在筆記本電腦。

雖然實例概要文件使得在集群上配置角色非常簡單,但隻能與實例概要文件關聯一個我的角色。這要求Databricks集群上的所有用戶共享該角色和該角色的數據訪問策略。但是,IAM角色可以用來承擔其他IAM角色,或者自己直接訪問數據。調用使用一個角色的憑據來承擔不同的角色角色鏈接

IAM憑據傳遞允許管理員將實例概要文件使用的IAM角色和用戶訪問數據時使用的角色分開。在Databricks中,我們稱實例角色為IAM元角色和數據訪問角色data IAM角色.類似於實例概要文件元實例概要是一個元IAM角色的容器。

元實例概要

對象授予用戶對數據IAM角色的訪問權SCIM API.如果您正在將角色與您的標識提供程序映射,那麼這些角色將同步到Databricks SCIM API。當您使用帶有憑據傳遞和元實例概要文件的集群時,您隻能假定您可以訪問的數據IAM角色。這允許具有不同數據訪問策略的多個用戶共享一個Databricks集群,同時保證數據安全。

本節介紹如何設置啟用IAM憑據透傳所需的元實例配置文件。

步驟1:配置IAM鑒權透傳角色

創建data IAM角色

使用現有的數據IAM角色或可選地遵循使用實例概要配置S3訪問,創建可以訪問S3桶的data IAM角色。

配置IAM元角色

將meta IAM角色配置為data IAM角色。

  1. 在AWS控製台中,轉到服務。

  2. 單擊角色選項卡。

  3. 點擊創建角色

    1. 選擇受信任實體類型中,選擇AWS服務。

    2. 單擊EC2服務。

  4. 點擊下一個權限

  5. 點擊創建政策.打開一個新窗口。

    1. 單擊JSON選項卡。

    2. 複製以下策略並設置<帳戶id >到您的AWS帳戶ID和< data-iam-role >到上一節中數據IAM角色的名稱。

      “版本”“2012-10-17”“聲明”“席德”“AssumeDataRoles”“效應”“允許”“行動”“sts: AssumeRole”“資源”“攻擊:aws:我::<帳戶id >:角色/ < data-iam-role >”
    3. 點擊審查政策

    4. 在“Name”字段中輸入策略名稱,單擊創建政策

  6. 返回到角色窗口並刷新它。

  7. 搜索策略名稱並選中策略名稱旁邊的複選框。

  8. 點擊下一個標簽而且下一個評論

  9. 在角色名稱文件中,鍵入元IAM角色的名稱。

  10. 點擊創建角色

  11. 在角色摘要中,複製實例配置ARN

配置data IAM角色信任meta IAM角色

為了使元IAM角色能夠承擔數據IAM角色,您需要使元角色受數據角色信任。

  1. 在AWS控製台中,轉到服務。

  2. 單擊角色選項卡。

  3. 找到在上一步中創建的數據角色並單擊它以進入角色詳細信息頁麵。

  4. 單擊信任關係TAB,如果未設置,則添加以下語句:

    “版本”“2012-10-17”“聲明”“效應”“允許”“校長”“AWS”“攻擊:aws:我::<帳戶id >:角色/ < meta-iam-role >”},“行動”“sts: AssumeRole”

步驟2:在Databricks中配置元實例配置文件

介紹在Databricks中配置元實例配置文件的操作步驟。

確定Databricks部署時使用的IAM角色

  1. 賬戶控製台

  2. 單擊工作區圖標。

  3. 單擊工作區的名稱。

  4. 請注意在憑證部分的ARN鍵的末尾的角色名稱,在下麵的圖像中它是“testco-role”。

    的角色是

修改Databricks部署時使用的IAM角色中的策略

  1. 在AWS控製台中,轉到服務。

  2. 單擊角色選項卡。

  3. 編輯上一節中提到的角色。

  4. 單擊附加到角色的策略。

  5. 修改策略以允許Databricks內的Spark集群的EC2實例使用您在中創建的元實例配置文件配置IAM元角色.有關示例,請參見在EC2策略中添加S3 IAM角色

  6. 點擊審查政策而且保存更改

將元實例配置文件添加到Databricks

  1. 管理控製台

  2. 選擇實例配置文件選項卡。

  3. 單擊添加實例配置文件按鈕。出現一個對話框。

  4. 為meta IAM角色粘貼Instance Profile ARN配置IAM元角色

  5. 檢查元實例配置文件複選框,然後單擊添加

    添加實例概要
  6. 可以選擇識別可以使用元實例配置文件啟動集群的用戶。

    配置實例概要文件

步驟3:為Databricks用戶添加IAM角色權限

維護用戶到IAM角色的映射有兩種方法:

使用下麵的圖表來幫助您決定哪種映射方法更適合您的工作空間:

要求

SCIM

身份提供商

單點登錄到Databricks

沒有

是的

配置AWS標識提供程序

沒有

是的

配置元實例概要

是的

是的

磚管理

是的

是的

AWS管理

是的

是的

標識提供程序管理

沒有

是的

當您使用元實例配置文件啟動一個集群時,該集群將通過您的身份,隻承擔您可以訪問的數據IAM角色。管理員必須授予用戶使用的數據IAM角色的權限SCIM API方法對角色設置權限。

請注意

如果您在IdP中映射角色,那麼這些角色將覆蓋在SCIM中映射的任何角色,您不應該將用戶直接映射到角色。看到步驟6:可選地配置Databricks將角色映射從SAML同步到SCIM

還可以使用將實例概要文件附加到用戶或組Databricks Terraform提供商而且databricks_user_roledatabricks_group_instance_profile

啟動IAM證書直通集群

啟動具有憑據傳遞的集群的過程因集群模式而異。

為高並發性集群啟用憑據傳遞

高並發集群可以被多個用戶共享。它們隻支持帶有直通功能的Python和SQL。

  1. 當你創建集群,設置集群模式高並發

  2. 選擇Databricks Runtime Version 6.1或以上版本。

  3. 高級選項中,選擇為用戶級數據訪問啟用憑據傳遞,並且隻允許Python和SQL命令

    為高並發性集群啟用憑據傳遞
  4. 單擊實例選項卡。在實例配置文件下拉菜單,選擇在其中創建的元實例概要文件將元實例配置文件添加到Databricks

    選擇實例概要

在Standard集群中開啟IAM鑒權直通功能

支持具有憑據傳遞的標準集群,但僅限於單個用戶。標準集群支持Python、SQL、Scala和r。在Databricks Runtime 10.1及以上版本上,也支持sparklyr。

創建集群時必須分配用戶,但可以由具有可以管理權限隨時替換原有用戶。

重要的

分配給集群的用戶必須至少擁有可以附著於集群的權限,以便在集群上運行命令。管理員和集群創建者擁有可以管理權限,但不能在集群上運行命令,除非他們是指定的集群用戶。

  1. 當你創建集群,設置集群模式標準

  2. 選擇Databricks Runtime Version 6.1或以上版本。

  3. 高級選項中,選擇為用戶級數據訪問啟用憑據傳遞

    為標準集群啟用憑據傳遞
  4. 中選擇用戶名單用戶接入下拉。

    單用戶訪問時選擇“user”
  5. 單擊實例選項卡。在實例配置文件下拉菜單,選擇在其中創建的元實例概要文件將元實例配置文件添加到Databricks

    選擇實例概要

使用IAM憑據直通訪問S3

您可以使用憑據傳遞訪問S3,方法是假設一個角色並直接訪問S3,或者使用該角色掛載S3桶並通過掛載訪問數據。

使用憑據傳遞讀寫S3數據

向S3讀寫數據:

dbutils憑證assumeRole“攻擊:aws:我::xxxxxxxx:角色/ < data-iam-role >”火花格式“csv”負載“s3a: / / prod-foobar / sampledata.csv”火花範圍1000模式“覆蓋”保存“s3a: / / prod-foobar / sampledata.parquet”
dbutils.credentials.assumeRole“攻擊:aws:我::xxxxxxxx:角色/ < data-iam-role >”# SparkR圖書館SparkRsparkR.session()read.df“s3a: / / prod-foobar / sampledata.csv”“csv”write.df作為。DataFramedata.frame11000)),路徑“s3a: / / prod-foobar / sampledata.parquet”“鋪”模式“覆蓋”# sparklyr圖書館sparklyrsc<-spark_connect方法“磚”sc% > %spark_read_csv“s3a: / / prod-foobar / sampledata.csv”sc% > %sdf_len1000% > %spark_write_parquet“s3a: / / prod-foobar / sampledata.parquet”模式“覆蓋”

使用dbutils角色:

dbutils憑證assumeRole“攻擊:aws:我::xxxxxxxx:角色/ < data-iam-role >”dbutilsfsls“s3a: / / bucketA /”
dbutils.credentials.assumeRole“攻擊:aws:我::xxxxxxxx:角色/ < data-iam-role >”dbutils.fs.ls“s3a: / / bucketA /”

為其他dbutils.credentials方法,請參閱憑證實用程序(dbutils.credentials)

使用IAM憑據傳遞將S3桶掛載到DBFS

對於更高級的場景(不同的桶或前綴需要不同的角色),使用Databricks桶掛載來指定訪問特定桶路徑時要使用的角色會更方便。

當您使用啟用了IAM憑據傳遞的集群掛載數據時,對掛載點的任何讀或寫都將使用您的憑據對掛載點進行身份驗證。這個掛載點對其他用戶是可見的,但是隻有那些具備讀寫權限的用戶:

  • 是否可以通過IAM數據角色訪問底層S3存儲帳戶

  • 使用集群是否啟用了IAM憑據傳遞

dbutilsfs“s3a: / / < s3 bucket > /數據/機密”“/ mnt /機密數據”extra_configs“fs.s3a.credentialsType”“自定義”“fs.s3a.credentialsType.customClass”“com.databricks.backend.daemon.driver.aws.AwsCredentialContextTokenProvider”“fs.s3a.stsAssumeRole.arn”“攻擊:aws:我::xxxxxxxx:角色/ < confidential-data-role >”})

通過IAM證書透傳訪問作業中的S3數據

若要在作業中使用憑據傳遞訪問S3數據,請根據配置集群啟動IAM證書直通集群當您選擇新的或現有的集群時。

選擇實例概要

集群將隻承擔作業所有者已被授予權限的角色,因此隻能訪問該角色有權限訪問的S3數據。

使用IAM憑證傳遞從JDBC或ODBC客戶端訪問S3數據

若要通過JDBC或ODBC客戶端使用IAM憑據透傳訪問S3數據,請根據啟動IAM證書直通集群並在客戶端中連接到這個集群。集群將隻承擔連接到它的用戶已被授予訪問權限的角色,因此隻能訪問用戶有權限訪問的S3數據。

要在SQL查詢中指定角色,請執行以下操作:

火花憑證假定角色在攻擊aws::XXXX角色/<數據--角色>—訪問有權限訪問的桶選擇csvs3//我的-/測驗csv

已知的限製

IAM證書傳遞不支持以下特性:

  • % fs(使用等價物dbutils.fs命令相反)。

  • 表訪問控製

  • 在SparkContext (sc)和SparkSession (火花)對象:

    • 棄用的方法。

    • 方法包括addFile ()而且addJar ()允許非管理員用戶調用Scala代碼。

    • 訪問S3以外的文件係統的任何方法。

    • 舊的Hadoop api (hadoopFile ()而且hadoopRDD ()).

    • 流api,因為在流仍在運行時,傳遞的憑據將過期。

  • DBFS坐騎/ dbfs)隻適用於Databricks Runtime 7.3 LTS及以上版本。通過此路徑不支持配置了憑據傳遞的掛載點。

  • 需要集群實例概要文件權限才能下載的集群範圍的庫。隻支持具有DBFS路徑的庫。

  • 磚連接高並發clusters僅在Databricks Runtime 7.3 LTS及以上版本可用。

  • MLflow