本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立 Amazon EBS CSI 驅動程式 IAM 角色
Amazon EBS CSI 外掛程式需要 IAM 許可,才能代表您呼叫 AWS API。如需詳細資訊,請參閱 GitHub 上的設定驅動程式許可
注意
Pods 可以存取指派給 IAM 角色的許可,除非您封鎖對 IMDS 的存取。如需詳細資訊,請參閱 Amazon EKS 的安全最佳實務。
必要條件
-
現有的叢集。
-
叢集的現有 AWS Identity and Access Management OpenID Connect (IAMOIDC) () 提供者。若要判定您是否已經擁有一個,或是要建立一個,請參閱 為您的叢集建立 IAM OIDC 提供者。
以下程序說明如何建立 IAM 角色,並將 AWS 受管政策連接到該角色。您可以使用 eksctl
、 AWS Management Console或 AWS CLI。
注意
本程序中的特定步驟是針對將驅動程式用作 Amazon EKS 附加元件而編寫。需要執行不同的步驟,才能將驅動程式用作自我管理附加元件。如需詳細資訊,請參閱 GitHub 上的設定驅動程式許可
- eksctl
-
使用
eksctl
建立 Amazon EBS CSI 外掛程式 IAM 角色-
建立 IAM 角色並附加政策。 AWS 維護受 AWS 管政策,或者您可以建立自己的自訂原則。您可以使用以下命令建立 IAM 角色並附加 AWS 受管政策。使用您叢集的名稱取代
。該命令會部署建立 IAM 角色並將 IAM 政策附加到其中的 AWS CloudFormation 堆疊。如果您的叢集位於 AWS GovCloud (美國東部) 或 AWS GovCloud (美國西部) AWS 區域,請取代my-cluster
arn:aws:
為.arn:aws-us-gov:
eksctl create iamserviceaccount \ --name ebs-csi-controller-sa \ --namespace kube-system \ --cluster
my-cluster
\ --role-nameAmazonEKS_EBS_CSI_DriverRole
\ --role-only \ --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --approve -
如果在 Amazon EBS 磁碟區上使用自訂 KMS 金鑰
進行加密,請視需要自訂 IAM 角色。例如,請執行以下操作: -
複製以下程式碼並貼到新
檔案中。將kms-key-for-encryption-on-ebs
.json
取代為自訂 KMS 金鑰 ARN。custom-key-arn
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["
custom-key-arn
"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn
"] } ] } -
建立政策。您可以將
變更為不同名稱。但是,如果您這樣做,請務必在稍後的步驟中也進行變更。KMS_Key_For_Encryption_On_EBS_Policy
aws iam create-policy \ --policy-name
KMS_Key_For_Encryption_On_EBS_Policy
\ --policy-document file://kms-key-for-encryption-on-ebs
.json -
使用以下命令將 IAM 政策連接至角色。使用您的帳戶 ID 取代
。如果您的叢集位於 AWS GovCloud (美國東部) 或 AWS GovCloud (美國西部) AWS 區域,請取代111122223333
arn:aws:
為.arn:aws-us-gov:
aws iam attach-role-policy \ --policy-arn arn:aws:iam::
111122223333
:policy/KMS_Key_For_Encryption_On_EBS_Policy
\ --role-nameAmazonEKS_EBS_CSI_DriverRole
-
-
- AWS Management Console
-
若要建立您的 Amazon EBS CSI 外掛程式 IAM 角色 AWS Management Console
前往 https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 -
在左側導覽窗格中,選擇 Roles (角色)。
-
在 Roles (角色) 頁面上,選擇 Create role (建立角色)。
-
在 Select trusted entity (選取信任的實體) 頁面上,執行以下作業:
在 Trusted entity type (信任的實體類型) 區段中,選擇 Web identity (Web 身分)。
-
在 Identity provider (身分提供者) 欄位,為您的叢集選擇 OpenID Connect provider URL ( 供應商 URL) (如 Amazon EKS Overview (概觀) 下所示)。
-
針對 Audience (對象),選擇
sts.amazonaws.com
。 選擇 Next (下一步)。
-
在 Add permissions (新增許可) 頁面上,執行以下作業:
-
在 Filter policies (篩選政策) 方塊中,輸入
AmazonEBSCSIDriverPolicy
。 -
勾選在搜尋中傳回的
AmazonEBSCSIDriverPolicy
左側的核取方塊。 選擇 Next (下一步)。
-
-
在 Name, review, and create (命名、檢閱和建立) 頁面上,執行以下作業:
-
針對 Role name (角色名稱),為您的角色輸入唯一名稱 (例如
)。AmazonEKS_EBS_CSI_DriverRole
藉由連接標籤做為鍵值對,在新增標籤 (選用) 下將中繼資料新增至角色。如需有關在 IAM 中使用標籤的詳細資訊,請參閱《IAM 使用者指南》中的標記 IAM 資源。
-
選擇建立角色。
-
建立角色之後,在主控台中選擇角色,以開啟角色進行編輯。
選擇 Trust Relationships (信任關係) 標籤,然後選擇 Edit Trust Relationship (編輯信任政策)。
-
查找與下列行相似的行:
"oidc.eks.
region-code
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
:aud": "sts.amazonaws.com"在上一行的末尾新增一個逗號,然後在上一行之後新增下一行。
以叢集所 AWS 區域 在的位置取代。將region-code
取代為叢集的 OIDC 供應商 ID。EXAMPLED539D4633E53DE1B71EXAMPLE
"oidc.eks.
region-code
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa" 選擇 Update policy (更新政策) 以完成操作。
-
如果在 Amazon EBS 磁碟區上使用自訂 KMS 金鑰
進行加密,請視需要自訂 IAM 角色。例如,請執行以下操作: -
在左側導覽窗格中選擇 Policies (政策)。
-
在 Policies (政策) 頁面上,選擇 Create a policy (建立政策)。
-
在建立政策頁面上,選擇 JSON 標籤。
-
複製以下程式碼並貼到編輯器中,將
取代為自訂 KMS 金鑰 ARN。custom-key-arn
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["
custom-key-arn
"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn
"] } ] } -
選擇下一步:標籤。
-
在 Add tags (Optional) (新增標籤 (選用)) 頁面上,選擇 Next: Review (下一步:檢閱)。
-
在 Name (名稱) 中輸入您的政策名稱 (例如
)。KMS_Key_For_Encryption_On_EBS_Policy
-
選擇建立政策。
-
在左側導覽窗格中,選擇 Roles (角色)。
-
DriverRole在控制台中選擇
亞馬遜 _EBS_CSI_
以將其打開以進行編輯。 -
在新增許可下拉式清單中,選擇連接政策。
-
在 Filter policies (篩選政策) 方塊中,輸入
。KMS_Key_For_Encryption_On_EBS_Policy
-
勾選在搜尋中傳回的
左側的核取方塊。KMS_Key_For_Encryption_On_EBS_Policy
-
選擇連接政策。
-
- AWS CLI
-
若要建立您的 Amazon EBS CSI 外掛程式 IAM 角色 AWS CLI
-
檢視叢集的 OIDC 提供商 URL。使用您的叢集名稱取代
。如果來自命令的輸出是my-cluster
None
,則請檢閱先決條件。aws eks describe-cluster --name
my-cluster
--query "cluster.identity.oidc.issuer" --output text範例輸出如下。
https://oidc.eks.
region-code
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
-
建立 IAM 角色,授予其
AssumeRoleWithWebIdentity
動作。-
將以下內容複製到名為
的檔案。使用您的帳戶 ID 取代aws-ebs-csi-driver-trust-policy
.json
。使用前一個步驟傳回的值取代111122223333
和EXAMPLED539D4633E53DE1B71EXAMPLE
。如果您的叢集位於 AWS GovCloud (美國東部) 或 AWS GovCloud (美國西部) AWS 區域,請取代region-code
arn:aws:
為.arn:aws-us-gov:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::
111122223333
:oidc-provider/oidc.eks.region-code
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region-code
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
:aud": "sts.amazonaws.com", "oidc.eks.region-code
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa" } } } ] } -
建立角色。您可以將
變更為不同名稱。若要變更名稱,請務必在稍後的步驟中進行變更。AmazonEKS_EBS_CSI_DriverRole
aws iam create-role \ --role-name
AmazonEKS_EBS_CSI_DriverRole
\ --assume-role-policy-document file://"aws-ebs-csi-driver-trust-policy
.json"
-
-
附加策略。 AWS 維護受 AWS 管政策,或者您可以建立自己的自訂原則。使用下列命令將 AWS 受管理的原則附加至角色。如果您的叢集位於 AWS GovCloud (美國東部) 或 AWS GovCloud (美國西部) AWS 區域,請取代
arn:aws:
為.arn:aws-us-gov:
aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --role-name
AmazonEKS_EBS_CSI_DriverRole
-
如果在 Amazon EBS 磁碟區上使用自訂 KMS 金鑰
進行加密,請視需要自訂 IAM 角色。例如,請執行以下操作: -
複製以下程式碼並貼到新
檔案中。將kms-key-for-encryption-on-ebs
.json
取代為自訂 KMS 金鑰 ARN。custom-key-arn
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["
custom-key-arn
"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn
"] } ] } -
建立政策。您可以將
變更為不同名稱。但是,如果您這樣做,請務必在稍後的步驟中也進行變更。KMS_Key_For_Encryption_On_EBS_Policy
aws iam create-policy \ --policy-name
KMS_Key_For_Encryption_On_EBS_Policy
\ --policy-document file://kms-key-for-encryption-on-ebs
.json -
使用以下命令將 IAM 政策連接至角色。使用您的帳戶 ID 取代
。如果您的叢集位於 AWS GovCloud (美國東部) 或 AWS GovCloud (美國西部) AWS 區域,請取代111122223333
arn:aws:
為.arn:aws-us-gov:
aws iam attach-role-policy \ --policy-arn arn:aws:iam::
111122223333
:policy/KMS_Key_For_Encryption_On_EBS_Policy
\ --role-nameAmazonEKS_EBS_CSI_DriverRole
-
-
現在,您已建立 Amazon EBS CSI 驅動程式 IAM 角色,即可繼續進行 新增 Amazon EBS CSI 驅動程式附加元件。當您在該程序中部署外掛程式時,其會建立並設定為使用名為 ebs-csi-controller-sa
的服務帳戶。服務帳戶會繫結至指派所需 Kubernetes 許可的 Kubernetes clusterrole
。