選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

適用於 Ranger 與 Amazon EMR 整合的 EMRFS S3 外掛程式

焦點模式
適用於 Ranger 與 Amazon EMR 整合的 EMRFS S3 外掛程式 - Amazon EMR

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

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

為了更輕鬆地對多租戶叢集上的 S3 中的物件提供存取控制,EMRFS S3 外掛程式在透過 EMRFS 存取 S3 內的資料時提供對資料的存取控制。您可以允許在使用者和群組層級存取 S3 資源。

為了實現這一點,當您的應用程式嘗試存取 S3 內的資料時,EMRFS 會向機密代理程式程序傳送憑證請求,其中此請求將根據 Apache Ranger 外掛程式進行身分驗證和授權。如果已授權請求,則機密代理程式會擔任 Apache Ranger 引擎的 IAM 角色,並使用受限政策產生只能存取允許存取的 Ranger 政策的憑證。然後,憑證會傳回 EMRFS 以存取 S3。

支援的功能

EMRFS S3 外掛程式提供儲存層級授權。您可以建立政策來為使用者和群組提供對 S3 儲存貯體和字首的存取權。僅對 EMRFS 進行授權。

安裝服務組態

若要安裝 EMRFS 服務定義,您必須設定 Ranger Admin 伺服器。若要設定伺服器,請參閱 設定 Ranger Admin 伺服器以與 Amazon EMR 整合

請遵循下列步驟安裝 EMRFS 服務定義。

步驟 1:透過 SSH 連接到 Apache Ranger Admin 伺服器

例如:

ssh ec2-user@ip-xxx-xxx-xxx-xxx.ec2.internal

步驟 2:下載 EMRFS 服務定義

在暫時目錄中,下載 Amazon EMR 服務定義。Ranger 2.x 版支援此服務定義。

wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-emrfs.json

步驟 3:註冊 EMRFS S3 服務定義

curl -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X POST -d @ranger-servicedef-amazon-emr-emrfs.json \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef'

如果此命令成功執行,您會在 Ranger Admin UI 中看到一個稱為 "AMAZON-EMR-S3" 的新服務,如下列影像所示 (顯示的是 Ranger 2.0 版)。

Ranger Admin 會建立 EMRFS S3 服務。

步驟 4:建立 AMAZON-EMR-EMRFS 應用程式的執行個體

建立服務定義的執行個體。

  • 按一下 AMAZON-EMR-EMRFS 旁邊的 +

填寫下列欄位:

服務名稱 (如果顯示):建議的值為 amazonemrs3。請記下此服務名稱,因為建立 EMR 安全組態時需要此名稱。

顯示名稱:為此服務顯示的名稱。建議的值為 amazonemrs3

憑證的通用名稱:憑證內的 CN 欄位用於從用戶端外掛程式連接至管理伺服器。此值必須與為外掛程式建立的 TLS 憑證中的 CN 欄位相符。

Ranger Admin 會編輯 EMRFS S3 服務。
注意

此外掛程式的 TLS 憑證應已在 Ranger Admin 伺服器上的信任存放區中註冊。如需詳細資訊,請參閱Apache Ranger 與 Amazon EMR 整合的 TLS 憑證

在建立服務時,Service Manager 包括 "AMAZON-EMR-EMRFS",如下列影像所示。

Ranger Admin 顯示新的 EMRFS S3 服務。

建立 EMRFS S3 政策

若要在 Service Manager 的建立政策頁面中建立新政策,請填寫下列欄位。

政策名稱:此政策的名稱。

政策標籤:您可以放在此政策上的標籤。

S3 資源:以儲存貯體和選用字首開始的資源。如需有關最佳實務的資訊,請參閱 EMRFS S3 政策使用須知。Ranger Admin 伺服器中的資源不應包含 s3://s3a://s3n://

Ranger Admin 顯示為 EMRFS S3 服務建立政策。

您可以指定要授予許可的使用者和群組。您也可以為允許條件和拒絕條件指定排除。

Ranger Admin 顯示 EMRFS S3 政策的使用者/群組許可。
注意

每個政策最多允許三個資源。在 EMR 叢集上使用此政策時,新增超過 3 個資源可能會導致錯誤。新增超過三個政策會顯示有關政策限制的提醒。

EMRFS S3 政策使用須知

在 Apache Ranger 內建立 S3 政策時,需要注意一些使用考量。

多個 S3 物件的許可

您可以使用遞迴政策和萬用字元表達式向具有通用字首的多個 S3 物件授予許可。遞迴政策為具有通用字首的所有物件授予許可。萬用字元表達式可選取多個字首。它們一起向具有多個通用字首的所有物件授予許可,如下列範例所示。

範例 使用遞迴政策

假設您希望獲得列出如下組織的 S3 儲存貯體中所有 parquet 檔案的許可。

s3://sales-reports/americas/ +- year=2000 | +- data-q1.parquet | +- data-q2.parquet +- year=2019 | +- data-q1.json | +- data-q2.json | +- data-q3.json | +- data-q4.json | +- year=2020 | +- data-q1.parquet | +- data-q2.parquet | +- data-q3.parquet | +- data-q4.parquet | +- annual-summary.parquet +- year=2021

首先,考慮字首為 s3://sales-reports/americas/year=2000 的 parquet 檔案。您可以透過兩種方式將 GetObject 許可授予所有檔案:

使用非遞迴政策:一種選擇是使用兩個不同的非遞迴政策:一個政策用於目錄,另一種政策用於檔案。

第一個政策為字首 s3://sales-reports/americas/year=2020 授予許可 (沒有結尾的 /)。

- S3 resource = "sales-reports/americas/year=2000" - permission = "GetObject" - user = "analyst"

第二個政策使用萬用字元表達式為所有字首為 sales-reports/americas/year=2020/ 的檔案授予許可 (請注意結尾的 /)。

- S3 resource = "sales-reports/americas/year=2020/*" - permission = "GetObject" - user = "analyst"

使用遞迴政策:更方便的替代方案是使用單一遞迴政策並為字首授予遞迴許可。

- S3 resource = "sales-reports/americas/year=2020" - permission = "GetObject" - user = "analyst" - is recursive = "True"

到目前為止,僅包含字首為 s3://sales-reports/americas/year=2000 的 parquet 檔案。現在,您也可以透過引入萬用字元表達式,將具有不同字首 s3://sales-reports/americas/year=2020 的 parquet 檔案包含到相同遞迴政策中,如下所示。

- S3 resource = "sales-reports/americas/year=20?0" - permission = "GetObject" - user = "analyst" - is recursive = "True"

PutObject 和 DeleteObject 許可的政策

PutObjectDeleteObject 許可的政策寫入 EMRFS 上的檔案需要特別小心,因為與 GetObject 許可不同,它們需要為字首授予額外遞迴許可。

範例 PutObject 和 DeleteObject 許可的政策

例如,刪除檔案 annual-summary.parquet 不僅需要對實際檔案具有 DeleteObject 許可,

- S3 resource = "sales-reports/americas/year=2020/annual-summary.parquet" - permission = "DeleteObject" - user = "analyst"

還需要一個為其字首授予遞迴 GetObjectPutObject 許可的政策。

同樣地,修改檔案 annual-summary.parquet 不僅需要對實際檔案具有 PutObject 許可,

- S3 resource = "sales-reports/americas/year=2020/annual-summary.parquet" - permission = "PutObject" - user = "analyst"

還需要一個為其字首授予遞迴 GetObject 許可的政策。

- S3 resource = "sales-reports/americas/year=2020" - permission = "GetObject" - user = "analyst" - is recursive = "True"

政策中的萬用字元

有兩個區域可以指定萬用字元。指定 S3 資源時,可以使用 "*" 和 "?"。"*" 提供與 S3 路徑的相符項目,並與字首之後的所有內容相符。例如,下列政策。

S3 resource = "sales-reports/americas/*"

這與下列 S3 路徑相符。

sales-reports/americas/year=2020/ sales-reports/americas/year=2019/ sales-reports/americas/year=2019/month=12/day=1/afile.parquet sales-reports/americas/year=2018/month=6/day=1/afile.parquet sales-reports/americas/year=2017/afile.parquet

"?" 萬用字元僅符合單一字元。例如,對於政策。

S3 resource = "sales-reports/americas/year=201?/"

這與下列 S3 路徑相符。

sales-reports/americas/year=2019/ sales-reports/americas/year=2018/ sales-reports/americas/year=2017/

使用者中的萬用字元

指派使用者時有兩個內建萬用字元,可為使用者提供存取權。第一個是可為所有使用者提供存取權的 "{USER}" 萬用字元。第二個萬用字元是 "{OWNER}",它提供對特定物件擁有者的存取或直接存取。但是,目前不支援 "{USER}" 萬用字元。

限制

以下是 EMRFS S3 外掛程式的目前限制:

  • Apache Ranger 政策最多可以具有三個政策。

  • 對 S3 的存取必須透過 EMRFS 完成,且可以與 Hadoop 相關的應用程式搭配使用。不支援下列項目:

    – Boto3 程式庫

    - AWS SDK 和 AWK CLI

    – S3A 開放原始碼連接器

  • 不支援 Apache Ranger 拒絕政策。

  • 目前不支援使用具有 CSE-KMS 加密的金鑰在 S3 上進行操作。

  • 不支援跨區域支援。

  • 不支援 Apache Ranger 的安全區域功能。使用安全區域功能定義的存取控制限制不會套用於 Amazon EMR 叢集。

  • Hadoop 使用者不會產生任何稽核事件,因為 Hadoop 始終存取 EC2 執行個體設定檔。

  • 建議您停用 Amazon EMR 一致性檢視。S3 高度一致,因此不再需要。如需詳細資訊,請參閱 Amazon S3 高度一致

  • EMRFS S3 外掛程式會進行大量 STS 呼叫。建議您在開發帳戶上進行負載測試並監控 STS 呼叫量。此外,我們也建議您提出 STS 請求,以提高 AssumeRole 服務限制。

  • Ranger Admin 伺服器不支援自動完成。

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。