AWS 秘密和組態提供者程式碼範例 - AWS Systems Manager

AWS Systems ManagerChange Manager 不再開放給新客戶。現有客戶可以繼續正常使用該服務。如需詳細資訊,請參閱AWS Systems ManagerChange Manager可用性變更

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

AWS 秘密和組態提供者程式碼範例

ASCP 身分驗證與存取控制範例

範例:允許 Amazon EKS Pod 身分識別服務 (pods.eks.amazonaws.com) 擔任角色與標記工作階段的 IAM 政策:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }

SecretProviderClass

您可以使用 YAML 來描述要使用 ASCP 在 Amazon EKS 中掛載的參數。如需範例,請參閱 SecretProviderClass 用量

SecretProviderClass YAML 結構

apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: name spec: provider: aws parameters: region: failoverRegion: pathTranslation: usePodIdentity: preferredAddressType: objects:

參數欄位包含掛載請求的詳細資訊:

region

(選用) 參數 AWS 區域 的 。如果不使用此欄位,ASCP 會從節點上的註釋尋找區域。此查閱會增加掛載請求的額外負荷,因此建議您為使用大量 Pod 的叢集提供區域。

如果您也指定 failoverRegion,則 ASCP 會嘗試從這兩個區域中擷取參數。如果任一區域傳回 4xx 錯誤 (例如身分驗證問題),則 ASCP 不會掛載任一參數。如果已成功從 region 擷取參數,則 ASCP 會掛載該參數值。如果未成功從 region 擷取參數,但已成功從 failoverRegion 擷取參數,則 ASCP 會掛載該參數值。

failoverRegion

(選用) 如果您包含此欄位,則 ASCP 會嘗試從 region 中定義的區域和此欄位擷取參數。如果任一區域傳回 4xx 錯誤 (例如身分驗證問題),則 ASCP 不會掛載任一參數。如果已成功從 region 擷取參數,則 ASCP 會掛載該參數值。如果未成功從 region 擷取參數,但已成功從 failoverRegion 擷取參數,則 ASCP 會掛載該參數值。如需如何使用此欄位的範例,請參閱 多區域參數容錯移轉

pathTranslation

(選用) 如果 Amazon EKS 中的檔案名稱將包含路徑分隔符號字元,例如 Linux 上的斜線 (/),則要使用的單一替代字元。ASCP 無法建立包含路徑分隔符號字元的掛載檔案。相反地,ASCP 會將路徑分隔符號字元取代為其他字元。如果不使用此欄位,則取代字元為底線 (_),例如 My/Path/Parameter 掛載為 My_Path_Parameter

若要避免發生字元取代的情況,請輸入字串 False

usePodIdentity

(選用) 決定身分驗證方法。未指定時,它預設為服務帳戶 (IRSA) 的 IAM 角色。

  • 若要使用 EKS Pod 身分識別,請使用下列任何值:"true""True""TRUE""t""T"

  • 若要明確使用 IRSA,請設定下列任何值:"false""False""f""FALSE""F"

preferredAddressType

(選用) 指定 Pod 身分識別代理程式端點通訊的偏好 IP 位址類型。此欄位僅在使用 EKS Pod 身分識別功能時適用,並在使用服務帳戶的 IAM 角色時忽略。值不區分大小寫。有效的值如下:

  • "ipv4""IPv4""IPV4" – 強制使用 Pod 身分識別代理程式 IPv4 端點

  • "ipv6""IPv6""IPV6" – 強制使用 Pod 身分識別代理程式 IPv6 端點

  • 未指定 – 使用自動端點選擇、先嘗試 IPv4 端點,並在 IPv4 失敗時退回到 IPv6 端點

objects

包含待掛載秘密的 YAML 宣告的字串。建議使用 YAML 多行字串或分隔號 (|) 字元。

objectName

必要. 指定要擷取的參數或秘密的名稱。對於 Parameter Store,這是參數的 Name,並且可以是參數的名稱或完整 ARN。對於 Secrets Manager,這是 SecretId 參數,並且可以是秘密的易記名稱或完整 ARN。

objectType

如果未針對 objectName 使用 Secrets Manager ARN,其則為必要欄位。對於 Parameter Store,請使用 ssmparameter。對於 Secrets Manager,請使用 secretsmanager

objectAlias

(選用) Amazon EKS Pod 中秘密的檔案名稱。如果您未指定此欄位,objectName 會顯示為檔案名稱。

objectVersion

(選用) 參數的版本 ID。不建議,因為每次更新參數時都必須更新版本 ID。依預設,會使用最新版本。如果您包含 failoverRegion,則此欄位代表主要 objectVersion

objectVersionLabel

(選用) 版本的別名。預設值為最新版本 AWSCURRENT。如果您包含 failoverRegion,則此欄位代表主要 objectVersionLabel

jmesPath

(選用) 要掛載在 Amazon EKS 中之檔案的參數金鑰映射。若要使用此欄位,您的參數值必須是 JSON 格式。

下列範例會顯示 JSON 編碼參數的樣子。

{ "username" : "myusername", "password" : "mypassword" }

金鑰為 usernamepassword。與 username 關聯的值是 myusername,與 password 關聯的值是 mypassword

如果使用此欄位,您必須包含 pathobjectAlias

路徑

參數值 JSON 中鍵值對的索引鍵。如果欄位包含連字號,請使用單引號將其逸出,例如:path: '"hyphenated-path"'

objectAlias

要掛載在 Amazon EKS Pod 中的檔案名稱。如果欄位包含連字號,請使用單引號將其逸出,例如:objectAlias: '"hyphenated-alias"'

failoverObject

(選用) 如果您指定此欄位,則 ASCP 會嘗試擷取在主要 objectName 中指定的參數和在 failoverObject objectName 子欄位中指定的參數。如果任一項傳回 4xx 錯誤 (例如身分驗證問題),則 ASCP 不會掛載任一參數。如果已成功從主要 objectName 擷取參數,則 ASCP 會掛載該參數值。如果未成功從主要 objectName 擷取參數,但已成功從容錯移轉 objectName 擷取參數,則 ASCP 會掛載該參數值。如果包含此欄位,則您必須包含欄位 objectAlias。如需如何使用此欄位的範例,請參閱 容錯移轉至其他參數

當容錯移轉參數不是複本時,您通常會使用此欄位。如需如何指定複本的範例,請參閱 多區域參數容錯移轉

objectName

容錯移轉參數的名稱或完整 ARN。如果您使用 ARN,則 ARN 中的區域必須與欄位 failoverRegion 相符。

objectVersion

(選用) 參數的版本 ID。必須與主要 objectVersion 相符。不建議,因為每次更新參數時都必須更新版本 ID。依預設,會使用最新版本。

objectVersionLabel

(選用) 版本的別名。預設值為最新版本 AWSCURRENT

建立基本 SecretProviderClass 組態,以在 Amazon EKS Pod 中掛載參數。

Pod Identity

SecretProviderClass 可在相同的 Amazon EKS 叢集中使用參數:

apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-parameter-store spec: provider: aws parameters: objects: | - objectName: "MyParameter" objectType: "ssmparameter" usePodIdentity: "true"
IRSA
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: deployment-aws-parameter spec: provider: aws parameters: objects: | - objectName: "MyParameter" objectType: "ssmparameter"

SecretProviderClass 用量

使用這些範例來建立不同案例的 SecretProviderClass 組態。

範例:按名稱或 ARN 掛載參數

此範例說明如何掛載三種不同類型的參數:

  • 由完整 ARN 指定的參數

  • 由名稱指定的參數

  • 秘密的參數版本

apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-parameters spec: provider: aws parameters: objects: | - objectName: "arn:aws:ssm:us-east-2:777788889999:parameter:MyParameter2-d4e5f6" - objectName: "MyParameter3" objectType: "ssmparameter" - objectName: "MyParameter4" objectType: "ssmparameter" objectVersionLabel: "AWSCURRENT"

範例:從參數掛載鍵值對

此範例說明如何從 JSON 格式參數掛載特定的鍵值對:

apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-parameters spec: provider: aws parameters: objects: | - objectName: "arn:aws:ssm:us-east-2:777788889999:parameter:MyParameter-a1b2c3" jmesPath: - path: username objectAlias: dbusername - path: password objectAlias: dbpassword

範例:容錯移轉組態範例

這些範例顯示如何設定參數的容錯移轉。

多區域參數容錯移轉

此範例說明如何為跨多個區域複寫的參數設定自動容錯移轉:

apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-parameters spec: provider: aws parameters: region: us-east-1 failoverRegion: us-east-2 objects: | - objectName: "MyParameter"
容錯移轉至其他參數

此範例說明如何將容錯移轉設定為其他參數 (非複本):

apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-parameters spec: provider: aws parameters: region: us-east-1 failoverRegion: us-east-2 objects: | - objectName: "arn:aws:ssm:us-east-1:777788889999:parameter:MyParameter-a1b2c3" objectAlias: "MyMountedParameter" failoverObject: - objectName: "arn:aws:ssm:us-east-2:777788889999:parameter:MyFailoverParameter-d4e5f6"

其他資源

如需有關如何搭配 Amazon EKS 使用 ASCP 的詳細資訊,請參閱下列資源: