使用 IAM 受信任設定檔授權資源
虛擬私有雲 經典基礎設施 Satellite
瞭解如何使用受信任的設定檔來設定資源存取權限。
您可以執行 ibmcloud oc cluster master refresh 指令來啟用 IAM 授信設定檔。
- 在 IAM 中
- 首先建立 IAM 可信賴的設定檔。 然後,透過選擇與叢集相匹配的條件,將可信設定檔與您的 Red Hat OpenShift on IBM Cloud 計算資源連結,包括叢集中的 Kubernetes 命名空間和服務帳戶。 最後,為您希望應用程式使用的 IBM Cloud 服務指定存取政策。
- 在您的群集中
- 透過 Kubernetes 服務帳號令牌容量推算,在您連結群集的 Kubernetes 命名空間中執行並使用該命名空間服務帳號的應用程式,可以交換服務帳號公開金鑰,以取得 IBM Cloud IAM 存取令牌。 您的應用程式可以使用此存取標記驗證對 IBM Cloud 服務 (例如資料庫、Watson 或 VPC 基礎架構) 的 API 請求。 透過可信賴設定檔的存取政策,您可以控制令牌讓應用程式執行哪些動作。
建立 IAM 可信賴的設定檔
若要在帳戶中建立受信任的設定檔,請參閱 IAM 文件中的 建立受信任的設定檔。 請注意,若要建立信任的設定檔,您必須是帳戶所有人。 此外,還需要以下存取角色。
- 所有帳戶管理服務的管理員角色。
- IAM Identity Service 上的管理員角色。 如需詳細資訊,請參閱 IAM Identity Service.
- 您的特定資源和元件所需的額外角色。
設定群集的預設信任設定檔
若要為單一群集設定信任設定檔,請執行 ibmcloud oc experimental trusted-profile set 指令。
如果您希望資源群組中的所有群集使用相同的受信任設定檔,請執行 ibmcloud oc experimental trusted-profile default set 指令。
查看您信賴的個人檔案詳情
若要取得同一資源群組中叢集的預設信任設定檔,請執行 ibmcloud oc experimental trusted-profile default get 指令。
配置應用程式 Pod 以向 IBM Cloud 服務進行鑑別
透過在 IAM 中使用可信設定檔,讓在 Red Hat® OpenShift® on IBM Cloud® 叢集 IBM CloudIdentity and Access Management 內運行的應用程式 Pod 存取 IBM Cloud 服務。 身為開發人員,您可以設定應用程式的 Pod 對連接到已設定 IAM 信任 IBM Cloud 設定檔的叢集中的服務進行驗證。
要完成這些步驟,您不需要擁有管理員存取角色。 然而,您必須滿足以下要求:具備檢視者平台 存取角色;針對 IAM IBM Cloud 中的叢集擁有寫入者服務 存取角色; Kubernetes Service 以及 IAM 身分識別服務 的 和 iam-identity.profile.linkToResource 操作 iam-identity.profile.create 權限。
開始之前:
- 存取您的 Red Hat OpenShift 叢集。
- 請確定您的帳戶管理者 已為叢集 建立 IAM 信任設定檔。
若要配置應用程式 Pod 以向 IBM Cloud 服務進行鑑別,請執行下列動作:
-
設計 Pod 配置檔以使用 服務帳戶記號磁區投射。
- 在
containers區段中,裝載volumeMounts區段中的身分記號。
... volumeMounts: - mountPath: /var/run/secrets/tokens name: sa-token ``` 1. 在 `volumes` 區段中,設定服務帳戶記號磁區投射。 修改 `expirationSeconds` 欄位,以控制記號有效的時間長度。 若要擷取 IAM 記號,服務帳戶記號有效期限必須小於或等於 1 小時。 {: tip} ```yaml {: codeblock} ... volumes: - name: sa-token projected: sources: - serviceAccountToken: path: sa-token expirationSeconds: 3600 audience: iam ... ``` - 在
-
設計應用程式以針對 IAM 記號交換服務帳戶預測記號,您可以使用該記號對 IBM Cloud 服務進行後續 API 呼叫。 請檢閱下列鑑別要求範例。 將
${profile_id}取代為叢集所鏈結之授信設定檔的 ID。 若要列出可用的設定檔 ID,您或帳戶管理者可以使用ibmcloud iam tps指令、GET 'https://iam.cloud.ibm.com/v1/profiles/?account_id=<account_id>',或者您可以在 IAM 主控台中檢視授信設定檔。curl -s -X POST \ -H "Content-Type: application/x-www-form-urlencoded" \ -H "Accept: application/json" \ -d grant_type=urn:ibm:params:oauth:grant-type:cr-token \ -d cr_token=$(cat /var/run/secrets/tokens/sa-token) \ -d profile_id=${profile_id} \ https://iam.cloud.ibm.com/identity/token -
在部署應用程式之前,請嘗試下列範例 Kubernetes 工作來測試記號交換。 在下列 Kubernetes 工作中,
curlPod 向 IBM Cloud IAM 發出 API 要求,以驗證叢集的公開金鑰已交換 IAM 存取記號。 您的應用程式可能會呼叫授信設定檔授權的其他 IBM Cloud 服務。apiVersion: batch/v1 kind: Job metadata: name: token-exchange-job namespace: default spec: template: spec: containers: - name: curl image: curlimages/curl:7.77.0 command: ["/bin/sh"] args: ["-c", "curl -s -H \"Content-Type: application/x-www-form-urlencoded\" -H \"Accept: application/json\" -d grant_type=urn:ibm:params:oauth:grant-type:cr-token -d cr_token=$(cat /var/run/secrets/tokens/sa-token) -d profile_id=<profile_id> https://iam.cloud.ibm.com/identity/token"] volumeMounts: - mountPath: /var/run/secrets/tokens name: sa-token restartPolicy: Never serviceAccountName: default volumes: - name: sa-token projected: sources: - serviceAccountToken: path: sa-token expirationSeconds: 3600 audience: iam -
部署工作。
kubectl apply -f exchange-job.yaml -
請檢閱工作詳細資料,以驗證它是否成功。
oc describe job token-exchange-job -
檢閱
job completed及succeeded訊息的輸出,以驗證工作是否成功。 -
如果工作成功,請檢查法蘭克福的 Activity Tracker 廣域事件,以驗證日誌行與「授信設定檔」要求的詳細資料。 如果工作失敗,請檢閱您的配置,然後再試一次。