本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon Neptune 中鏈結 IAM 角色
重要
在引擎版本 1.2.1.0.R3 中引進的新大量載入跨帳戶功能,其會利用鏈結 IAM 角色,但在某些情況下可能會導致您觀察到大量載入效能降低。因此,已暫時暫停升級至支援此功能的引擎版本,直到此問題得到解決為止。
當您將角色附加至叢集時,您的叢集可以擔任該角色,代表您存取 Amazon S3 中儲存的資料。從引擎版本 1.2.1.0.R3 開始,如果該角色無法存取您需要的所有資源,您可以鏈結您的叢集可以擔任的一或多個其他角色,以取得其他資源的存取權。鏈結中的每個角色都會擔任鏈結中的下一個角色,直到您的叢集已擔任鏈結尾端的角色為止。
若要鏈結這些角色,請在它們之間建立信任關係。例如,若要將 RoleB
鏈接至 RoleA
,RoleA
必須具有允許它擔任 RoleB
的許可政策,而且 RoleB
必須具有允許其將其許可傳回 RoleA
的信任政策。如需詳細資訊,請參閱使用 IAM 角色。
鏈結中的第一個角色必須附加至正在載入資料的叢集。
第一個角色以及擔任鏈結中隨後角色的每個後續角色必須具有:
包含對
sts:AssumeRole
動作具有Allow
效果之特定陳述式的政策。Resource
元素中下一個角色的 Amazon Resource Name (ARN)。
注意
目標 Amazon S3 儲存貯體必須與叢集位於相同的 AWS 區域。
使用鏈結的角色進行跨帳戶存取
您可以鏈結屬於另一個帳戶的一個或多個角色來授與跨帳戶存取權。當您的叢集暫時擔任屬於另一個帳戶的角色時,它可以取得該處資源的存取權。
例如,假設帳戶 A 想要存取屬於帳戶 B 的 Amazon S3 儲存貯體中的資料:
帳戶 A 會為名為的 Neptune 建立 AWS 服務角色,
RoleA
並將其附加至叢集。帳戶 B 會建立一個名為
RoleB
的角色,其獲授權可以存取帳戶 B 儲存貯體中的資料。帳戶 A 會將許可政策附加至
RoleA
,允許其擔任RoleB
。帳戶 B 會將信任策略附加至
RoleB
,允許其將其許可傳回RoleA
。若要存取帳戶 B 儲存貯體中的資料,帳戶 A 會使用鏈結
RoleA
和RoleB
的iamRoleArn
參數執行載入器命令。在載入器操作期間,RoleA
接著會暫時擔任RoleB
,以存取帳戶 B 中的 Amazon S3 儲存貯體。
![說明使用鏈結的角色進行跨帳戶存取的圖表](images/cross-account-bulk-load.png)
例如,RoleA
會有一個與 Neptune 建立信任關係的信任政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
RoleA
還會有一個允許它擔任 RoleB
的許可政策,此角色是帳戶 B 擁有的:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1487639602000", "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::
(Account B ID)
:role/RoleB" } ] }
相反地,RoleB
會有一個信任政策,與 RoleA
建立信任關係:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::
(Account A ID)
:role/RoleA" } } ] }
RoleB
還需要許可,才能存取位於帳戶 B 的 Amazon S3 儲存貯體中的資料。
建立 AWS Security Token Service (STS) VPC 端點
當您連結 IAM 角色以透過私有 IP 位址私有存取 AWS STS API AWS STS 時,Neptune 載入程式需要 VPC 端點。您可以以安全且可擴展的方式,直接從 Amazon VPC 連線到 AWS STS VPC 端點。當您使用介面 VPC 端點時,它會提供更安全的狀態,因為您不需要開啟輸出流量防火牆。它還會提供使用 Amazon VPC 端點的其他好處。
使用 VPC 端點時,流量 AWS STS 不會透過網際網路傳輸,也不會離開 Amazon 網路。您的 VPC 人雲端會安全地連線至網路流量, AWS STS 不會造成可用性風險或頻寬限制。如需詳細資訊,請參閱使用 AWS STS 介面 VPC 端點。
若要設定 AWS Security Token Service (STS) 的存取權
登入 AWS Management Console 並開啟 Amazon VPC 主控台,網址為 https://console.aws.amazon.com/vpc/
。 在導覽窗格中選擇端點。
選擇建立端點。
為介面類型端點選擇服務名稱:
com.amazonaws.region.sts
。選擇包含您的 Neptune 資料庫執行個體和 EC2 執行個體的 VPC。
選取 EC2 執行個體所在子網路旁邊的核取方塊。您無法在相同的可用區域內選取多個子網路。
-
針對 IP address type (IP 地址類型),從下列選項中選擇:
IPv4 - 將 IPv4 地址指派給您的端點網路介面。只有當所有選取的子網都具有 IPv4 地址範圍時,才支援此選項。
IPv6 - 將 IPv6 地址指派給您的端點網路介面。只有當所有選取的子網路都是僅限 IPv6 子網路,才支援此選項。
Dualstack - 將 IPv4 和 IPv6 地址指派給您的端點網路介面。只有當所有選取的子網都具有 IPv4 和 IPv6 地址範圍時,才支援此選項。
對於 安全群組,選取要與 VPC 端點的端點網路界面建立關聯的安全群組。您需要選取所有附加到 Neptune 資料庫執行個體和 EC2 執行個體的安全群組。
對於 Policy (政策),選取 Full access (完整存取),以允許 VPC 端點上所有資源的所有主體進行所有操作。否則,選取 Custom (自訂) 以連接 VPC 端點政策,該政策控制主體在 VPC 端點上對資源執行動作時所具有的許可。只有服務支援 VPC 端點政策時,此選項才可用。如需詳細資訊,請參閱端點政策。
(選用) 若要新增標籤,請選擇新增標籤,然後輸入您想要的標籤金鑰和標籤值。
選擇建立端點。
如需建立端點的相關資訊,請參閱《Amazon VPC 使用者指南》中的 VPC 端點。請注意,Amazon STS VPC 端點是 IAM 角色鏈結的必要條件。
現在您已授與 AWS STS 端點的存取權,您可以準備載入資料。如需有關支援格式的相關資訊,請參閱載入資料格式。
在載入器命令內鏈結角色
您可以在執行載入器命令時指定角色鏈結,方法是在 iamRoleArn
參數中包含逗號分隔的角色 ARN 清單。
儘管您大多只需要在鏈結中具有兩個角色,但當然可以同時鏈結三個以上的角色。例如,此載入器命令會鏈結三個角色:
curl -X POST https://localhost:8182/loader \ -H 'Content-Type: application/json' \ -d '{ "source" : "s3://
(the target bucket name)
/(the target date file name)
", "iamRoleArn" : "arn:aws:iam::(Account A ID)
:role/(RoleA)
,arn:aws:iam::(Account B ID)
:role/(RoleB)
,arn:aws:iam::(Account C ID)
:role/(RoleC)
", "format" : "csv", "region" : "us-east-1" }'