本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Studio 中設定 Amazon EMR 叢集存取的 IAM 執行期角色
當您從 Studio 或 Studio Classic 筆記本連線至 Amazon EMR 叢集時,您可以視覺化瀏覽稱為執行期角色的 IAM 角色清單,並即時選擇一個角色。之後,從筆記本建立的所有 Apache Spark、Apache Hive 或 Presto 任務,都只會存取連接到執行時間角色的政策所允許的資料和資源。此外,從使用 管理的資料湖存取資料時 AWS Lake Formation,您可以使用連接到執行期角色的政策來強制執行資料表層級和資料欄層級的存取。
透過這項功能,您和團隊成員可以連線到同一個叢集,每個叢集都使用執行期角色,其許可範圍將與您個別的資料存取層級相符。您的工作階段也會在共用叢集上彼此隔離。
若要使用 Studio Classic 嘗試此功能,請參閱使用 AWS Lake Formation 和來自 Amazon SageMaker Studio Classic 的 Amazon EMR 套用精細資料存取控制
必要條件
開始之前,請確定您符合以下先決條件:
-
使用 Amazon EMR 版本 6.9 或以上。
-
對於 Studio Classic 使用者:在 Studio Classic Jupyter 伺服器應用程式組態中使用 JupyterLab 第 3 版。此版本支援使用執行期角色連線至 Amazon EMR 叢集的 Studio Classic 連線。
對於 Studio 使用者:使用 SageMaker 分佈映像版本
1.10
或更新版本。 -
允許在叢集的安全組態中使用執行期角色。如需詳細資訊,請參閱 Amazon EMR 步驟的執行期角色。
-
使用 支援從 Studio 或 Studio Classic 連線至 Amazon EMR 叢集的影像和核心 中列出的任何核心建立筆記本。
-
請務必檢閱 中的指示設定 Studio 以使用執行期 IAM 角色,以設定執行期角色。
跨帳戶連線案例
當您的資料位於 Studio 帳戶之外時,執行期角色驗證可支援各種跨帳戶連線案例。下圖顯示三種不同的方式,您可以在 Studio 和資料帳戶之間指派 Amazon EMR 叢集、資料,甚至是 Amazon EMR 執行時間執行角色:

在選項 1 中,您的 Amazon EMR 叢集和 Amazon EMR 執行時間執行角色位於與 Studio 帳戶不同的資料帳戶中。您可以定義單獨的 Amazon EMR 存取角色 (也稱為 Assumable role
) 許可政策,將許可授予 Studio 或 Studio Classic 執行角色以擔任 Amazon EMR 存取角色。然後,Amazon EMR 存取角色會GetClusterSessionCredentials
代表 Studio 或 Studio Classic 執行角色呼叫 Amazon EMR API,讓您存取叢集。
在選項 2 中,Amazon EMR 叢集和 Amazon EMR 執行時間執行角色位於您的 Studio 帳戶中。您的 Studio 執行角色具有使用 Amazon EMR API GetClusterSessionCredentials
存取叢集的許可。若要存取 Amazon S3 儲存貯體,請授予 Amazon EMR 執行時間執行角色跨帳戶 Amazon S3 儲存貯體存取許可,您可以在 Amazon S3 儲存貯體政策中授予這些許可。
在選項 3 中,您的 Amazon EMR 叢集位於您的 Studio 帳戶中,而 Amazon EMR 執行時間執行角色位於資料帳戶中。您的 Studio 或 Studio Classic 執行角色具有使用 Amazon EMR API GetClusterSessionCredentials
存取叢集的許可。將 Amazon EMR 執行時間執行角色新增至執行角色組態 JSON。接著即可在選擇叢集時在使用者介面中選取角色。如需如何設定執行角色設定 JSON 檔案的詳細資訊,請參閱將執行角色預先載入 Studio 或 Studio Classic。
設定 Studio 以使用執行期 IAM 角色
若要為 Amazon EMR 叢集建立執行期角色身分驗證,請設定必要的 IAM 政策、網路和可用性增強功能。如果您的 Amazon EMR 叢集、Amazon EMR 執行時間執行角色或兩者都位於 Studio 帳戶之外,您的設定取決於您是否處理任何跨帳戶安排。下一節會引導您完成要安裝的政策、如何設定網路以允許跨帳戶之間的流量,以及設定本機組態檔案以自動化 Amazon EMR 連線。
當您的 Amazon EMR 叢集和 Studio 位於相同帳戶時,設定執行期的角色身分驗證
如果您的 Amazon EMR 叢集位於您的 Studio 帳戶中,請完成下列步驟,將必要的許可新增至您的 Studio 執行政策:
-
新增必要的 IAM 政策,以連線到 Amazon EMR 叢集。如需詳細資訊,請參閱 設定列出 Amazon EMR 叢集。
-
當您傳遞政策中指定的一或多個允許的 Amazon EMR 執行期執行角色
GetClusterSessionCredentials
時,授予呼叫 Amazon EMR API 的許可。 -
(選用) 授與許可,以傳遞遵循任何使用者定義命名慣例的 IAM 角色。
-
(選用) 授與許可,以存取使用特定使用者定義字串標記的 Amazon EMR 叢集。
-
預先載入您的 IAM 角色,讓您可以選取要在連線至 Amazon EMR 叢集時使用的角色。如需有關預先載入 IAM 角色的詳細資訊,請參閱將執行角色預先載入 Studio 或 Studio Classic。
下列範例政策允許屬於建模和訓練群組的 Amazon EMR 執行期執行角色呼叫 GetClusterSessionCredentials
。此外,政策擁有者可存取標記為字串 modeling
或 training
的 Amazon EMR 叢集。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "*", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::123456780910:role/emr-execution-role-ml-modeling*", "arn:aws:iam::123456780910:role/emr-execution-role-ml-training*" ], "elasticmapreduce:ResourceTag/group": [ "*modeling*", "*training*" ] } } } ] }
當叢集和 Studio 位於不同帳戶時,設定執行期角色驗證
如果您的 Amazon EMR 叢集不在您的 Studio 帳戶中,請允許 SageMaker AI 執行角色擔任跨帳戶 Amazon EMR 存取角色,以便您可以連線至叢集。若要設定跨帳戶組態,請完成以下步驟:
-
建立 SageMaker AI 執行角色許可政策,以便執行角色可以擔任 Amazon EMR 存取角色。以下為政策的範例:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAssumeCrossAccountEMRAccessRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::
emr_account_id
:role/emr-access-role-name
" } ] } -
建立信任政策以指定哪些 Studio 帳戶 ID 受信任,以擔任 Amazon EMR 存取角色。以下為政策的範例:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountSageMakerExecutionRoleToAssumeThisRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
studio_account_id
:role/studio_execution_role
" }, "Action": "sts:AssumeRole" } } -
建立 Amazon EMR 存取角色許可政策,這會授予 Amazon EMR 執行期執行角色所需的許可,以在叢集上執行預期任務。將 Amazon EMR 存取角色設定為
GetClusterSessionCredentials
使用存取角色許可政策中指定的 Amazon EMR 執行期執行角色呼叫 API。以下為政策的範例:{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallingEmrGetClusterSessionCredentialsAPI", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::
emr_account_id
:role/emr-execution-role-name
" ] } } } ] } -
設定跨帳戶網路,讓流量可以在您的帳戶之間來回移動。如需引導式指示,請參閱設定 Amazon EMR 叢集的網路存取設定 。本節中的步驟可協助您完成下列任務:
-
VPC 會對等您的 Studio 帳戶和您的 Amazon EMR 帳戶以建立連線。
-
手動將路由新增至兩個帳戶中的私人子網路路由表。這樣一來,將可從 Studio 帳戶建立和連線至 Amazon EMR 叢集到遠端帳戶的私有子網路。
-
設定連接到 Studio 網域的安全群組,以允許傳出流量和 Amazon EMR 主要節點的安全群組允許來自 Studio 執行個體安全群組的傳入 TCP 流量。
-
-
預先載入您的 IAM 執行期角色,讓您可以選取要在連線至 Amazon EMR 叢集時使用的角色。如需有關預先載入 IAM 角色的詳細資訊,請參閱將執行角色預先載入 Studio 或 Studio Classic。
設定 Lake Formation 存取權
當您從 管理的資料湖存取資料時 AWS Lake Formation,您可以使用連接到執行期角色的政策來強制執行資料表層級和資料欄層級的存取。若要設定 Lake Formation 存取權限,請參閱將 Amazon EMR 與 AWS Lake Formation整合。
將執行角色預先載入 Studio 或 Studio Classic
您可以預先載入 IAM 執行期角色,以便選取要在連線至 Amazon EMR 叢集時使用的角色。Studio 中 JupyterLab 的使用者可以使用 SageMaker AI 主控台或提供的指令碼。