使用 Amazon S3 訪問贈款與 Amazon EMR - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon S3 訪問贈款與 Amazon EMR

Amazon 的 S3 存取授權概觀 EMR

Amazon S3 存取授權使用 Amazon 6.15.0 及更高EMR版本時,提供可擴展的存取控制解決方案,您可以使用這些解決方案來擴大對 Amazon S3 資料的存取。EMR如果您的 S3 資料有複雜或大型的許可組態,您可以使用 Access Grants 來擴展叢集上使用者、角色和應用程式的 S3 資料許可。

使用 S3 存取權授與擴大對 Amazon S3 資料的存取權限,超越執行時期IAM角色授予的許可或附加至具有EMR叢集存取權的身分的角色。如需詳細資訊,請參閱《Amazon S3 使用者指南》中的使用 S3 Access Grants 管理存取

如需將 S3 存取授與與其他 Amazon EMR 部署搭配使用的步驟,請參閱下列文件:

Amazon 如何EMR與 S3 訪問贈款一起使用

Amazon EMR 版本 6.15.0 及更高版本提供與 S3 存取授權的原生整合。您可以在 Amazon 上啟用 S3 存取授權EMR並執行 Spark 任務。當 Spark 作業提出 S3 資料請求時,Amazon S3 會提供僅限於特定儲存貯體、字首或物件的臨時憑證。

以下是 Amazon 如何存取受 S3 存EMR取授權保護之資料的高階概觀。

Amazon 如何EMR與 S3 訪問贈款一起使用
  1. 使用者提交 Amazon S EMR park 任務,該任務使用存放在 Amazon S3 中的資料。

  2. Amazon 提出 S3 存取授權請求,以允許代表該EMR使用者存取儲存貯體、前綴或物件。

  3. Amazon S3 會以 AWS Security Token Service (STS) 權杖形式為使用者傳回臨時登入資料。權杖的範圍設定為存取 S3 儲存貯體、字首或物件。

  4. Amazon EMR 使用STS令牌從 S3 檢索數據。

  5. Amazon 從 S3 EMR 接收數據並將結果返回給用戶。

使用 Amazon 的 S3 存取授予考量 EMR

在 Amazon 上使用 S3 存取授權時,請注意下列行為和限制EMR。

功能支援

  • Amazon 6.15.0 及更高EMR版本支援 S3 存取授權。

  • 當您在 Amazon 上使用 S3 訪問授權時,Spark 是唯一支持的查詢引擎EMR。

  • 當您透過 Amazon 使用 S3 存取授權時,唯一支援達美湖和 Hudi 的開放式表格式。EMR

  • 下列 Amazon EMR 功能不支援搭配 S3 存取授權使用:

    • Apache Iceberg 資料表

    • LDAP原生驗證

    • Apache Ranger 原生身分驗證

    • AWS CLI 向使用IAM角色的 Amazon S3 發出請求

    • 透過開放原始碼 S3A 通訊協定的 S3 存取

  • 透IAM過身分識別中心使用受信任身分識別傳播的EMR叢集不支援此fallbackToIAM選項。

  • 有 AWS Lake Formation在 Amazon 上執行的 Amazon EMR 叢集才支援 S3 存取授權EC2。

行為考量事項

  • 與 Amazon 的 Apache Ranger 原生集成EMR保持與 S3 訪問贈款一致的功能作為 EMRFS S3 Apache 遊俠插件的一部分。如果您使用 Apache Ranger 進行精細的存取控制 (FGAC),建議您使用該外掛程式而不是 S3 存取授權。

  • Amazon 在中EMREMRFS提供登入資料快取,以確保使用者不需要在 Spark 任務中對相同的登入資料發出重複請求。因此,Amazon 在請求登入資料時EMR一律要求預設層級權限。如需詳細資訊,請參閱《Amazon S3 使用者指南》中的請求存取 S3 資料

  • 如果使用者執行 S3 存取授與不支援的動作,Amazon EMR 會設定為使用為任務執行指定的IAM角色。如需詳細資訊,請參閱回到IAM角色

使用 S3 存取授權啟動 Amazon EMR 叢集

本節說明如何啟動在 Amazon 上執行的EMR叢集EC2,以及如何使用 S3 存取授與管理 Amazon S3 中資料的存取權。如需將 S3 存取授與與其他 Amazon EMR 部署搭配使用的步驟,請參閱下列文件:

使用下列步驟啟動在 Amazon 上執行的EMR叢集EC2,並使用 S3 存取授與管理 Amazon S3 中資料的存取權。

  1. 設定EMR叢集的工作執行角色。包含執行 Spark 作業所需的必要IAM權限,以s3:GetDataAccesss3:GetAccessGrantsInstanceForPrefix

    { "Effect": "Allow", "Action": [ "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": [ //LIST ALL INSTANCE ARNS THAT THE ROLE IS ALLOWED TO QUERY "arn:aws_partition:s3:Region:account-id1:access-grants/default", "arn:aws_partition:s3:Region:account-id2:access-grants/default" ] }
    注意

    透過 AmazonEMR,S3 存取授權可增強在IAM角色中設定的許可。如果您為任務執行指定的IAM角色包含直接存取 S3 的權限,則使用者可能可以存取更多的資料,而不僅僅是您在 S3 存取授與中定義的資料。

  2. 接下來,使用 AWS CLI 建立具有 Amazon EMR 6.15 或更高版本的叢集,並使用emrfs-site分類來啟用 S3 存取授權,類似下列範例:

    aws emr create-cluster --release-label emr-6.15.0 \ --instance-count 3 \ --instance-type m5.xlarge \ --configurations '[{"Classification":"emrfs-site", "Properties":{"fs.s3.s3AccessGrants.enabled":"true", "fs.s3.s3AccessGrants.fallbackToIAM":"false"}}]'

S3 存取授與 AWS Lake Formation

如果您將 Amazon EMR 與AWS Lake Formation 整合搭配使用,您可以使用 Amazon S3 存取授權直接或表格式存取 Amazon S3 中的資料。

注意

只有 AWS Lake Formation 在 Amazon 上執行的 Amazon EMR 叢集才支援 S3 存取授權EC2。

直接存取

直接存取涉及存取 S3 資料的所有呼叫,這些資料不會叫API用 Lake Formation 作為 Amazon 的中繼存放區使用的 AWS Glue 服務EMR,例如呼叫spark.read

spark.read.csv("s3://...")

當您 AWS Lake Formation 在 Amazon 上使用 S3 存取授權時EMR,所有直接存取模式都會透過 S3 存取授與取得暫時的 S3 登入資料。

表格式存取

當 Lake Formation 叫用中繼存放區API以存取 S3 位置 (例如,查詢資料表資料) 時,就會發生表格式存取:

spark.sql("select * from test_tbl")

當您 AWS Lake Formation 在 Amazon 上使用 S3 存取授權時EMR,所有表格式存取模式都會經過 Lake Formation。

回到IAM角色

如果使用者嘗試執行 S3 存取授與不支援的動作,Amazon 會EMR預設使用在fallbackToIAM組態為時為任務執行指定的IAM角色true。這讓使用者可回復其作業執行角色,以在 S3 Access Grants 未涵蓋的案例中,提供 S3 存取憑證。

fallbackToIAM 啟用後,使用者可以存取 Access Grant 允許的資料。如果目標資料沒有 S3 存取授與權杖,Amazon 會EMR檢查其任務執行角色的許可。

注意

即使您打算停用生產工作負載的選項,我們仍建議您在啟用 fallbackToIAM 組態的情況下測試存取許可。使用 Spark 工作時,使用者還可以透過其IAM認證存取所有權限集的其他方式。在EMR叢集上啟用時,S3 的授權可讓 Spark 任務存取 S3 位置。您應確保保護這些 S3 位置不受外部存取EMRFS。例如,您應該保護 S3 位置,避免受到筆記本中使用的 S3 用戶端存取,或受到 S3 Access Grants 不支援的應用程式 (例如 Hive 或 Presto) 存取。