日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過(guò)RRSA配置ServiceAccount的RAM權(quán)限實(shí)現(xiàn)Pod權(quán)限隔離

更新時(shí)間:

基于適用于服務(wù)賬戶的RAM角色(RAM Roles for Service Accounts,簡(jiǎn)稱RRSA)功能,您可以在集群內(nèi)實(shí)現(xiàn)Pod維度的OpenAPI權(quán)限隔離,從而實(shí)現(xiàn)云資源訪問(wèn)權(quán)限的細(xì)粒度隔離,降低安全風(fēng)險(xiǎn)。本文介紹如何在集群中使用RRSA。

背景信息

ECS實(shí)例元數(shù)據(jù)包含ECS實(shí)例(ECI實(shí)例基于ECS實(shí)例實(shí)現(xiàn))在阿里云系統(tǒng)中的信息。您可以在運(yùn)行中的實(shí)例內(nèi)查看實(shí)例元數(shù)據(jù),并基于實(shí)例元數(shù)據(jù)配置或管理實(shí)例。通過(guò)實(shí)例元數(shù)據(jù),Kubernetes集群內(nèi)應(yīng)用可以獲取實(shí)例RAM角色策略所生成的STS臨時(shí)憑證,然后通過(guò)該臨時(shí)憑證訪問(wèn)云資源OpenAPI。更多信息,請(qǐng)參見(jiàn)實(shí)例元數(shù)據(jù)

image

當(dāng)您需要限制集群內(nèi)不同應(yīng)用的RAM權(quán)限時(shí),出于安全考慮,您應(yīng)當(dāng)禁止這些應(yīng)用通過(guò)ECS或ECI實(shí)例元數(shù)據(jù)獲取您的實(shí)例關(guān)聯(lián)角色對(duì)應(yīng)的臨時(shí)憑證或者不為實(shí)例關(guān)聯(lián)角色授予任何RAM權(quán)限策略。但這些應(yīng)用仍然會(huì)需要一種安全的途徑去獲取訪問(wèn)云資源的臨時(shí)憑證。因此,阿里云容器服務(wù)ACK聯(lián)合RAM訪問(wèn)控制服務(wù)推出了RRSA功能。

基于RRSA功能,您可以在集群內(nèi)實(shí)現(xiàn)Pod級(jí)別隔離的應(yīng)用關(guān)聯(lián)RAM角色功能。各個(gè)應(yīng)用可以扮演獨(dú)立的RAM角色并使用獲取的臨時(shí)憑證訪問(wèn)云資源,從而實(shí)現(xiàn)應(yīng)用RAM權(quán)限最小化以及無(wú)AccessKey訪問(wèn)阿里云OpenAPI避免AccessKey泄露的需求。

image

從用戶側(cè)視角來(lái)看,RRSA功能的工作流程如下。

  1. 用戶提交使用了服務(wù)賬戶令牌卷投影功能的應(yīng)用Pod。

  2. 集群將為該應(yīng)用Pod創(chuàng)建和掛載相應(yīng)的服務(wù)賬戶OIDC Token文件。

  3. Pod內(nèi)程序使用掛載的OIDC Token文件訪問(wèn)STS服務(wù)的AssumeRoleWithOIDC接口,獲取扮演指定RAM角色的臨時(shí)憑證。

    說(shuō)明
    • 請(qǐng)?zhí)崆靶薷腞AM角色配置,允許Pod使用的服務(wù)賬戶扮演該RAM角色。更多信息,請(qǐng)參見(jiàn)AssumeRoleWithOIDC

    • 從文件中讀取的OIDC Token是一個(gè)臨時(shí)Token,建議應(yīng)用程序每次在使用時(shí)都從文件中讀取最新的Token,集群會(huì)在Token過(guò)期前更新替換文件內(nèi)已有的Token。

  4. Pod內(nèi)程序使用獲取到的臨時(shí)憑證訪問(wèn)云資源OpenAPI。

使用限制

RRSA功能目前僅支持1.22及以上版本的集群,即ACK集群基礎(chǔ)版ACK集群Pro版ACK Serverless集群基礎(chǔ)版ACK Serverless集群Pro版ACK Edge集群Pro版

啟用RRSA功能

若未創(chuàng)建集群,您可以在創(chuàng)建ACK托管集群ACK Edge集群時(shí)開(kāi)啟,若已創(chuàng)建集群,可在集群信息頁(yè)面的安全與審計(jì)頁(yè)簽下開(kāi)啟。

說(shuō)明

ACK Serverless集群僅支持集群創(chuàng)建后在集群信息頁(yè)面的安全與審計(jì)頁(yè)簽下開(kāi)啟。

創(chuàng)建集群時(shí)開(kāi)啟

創(chuàng)建ACK托管集群ACK Edge集群時(shí),您可以在集群配置的高級(jí)選項(xiàng)(選填)區(qū)域,選中開(kāi)啟RRSA功能。

image

在集群信息頁(yè)面開(kāi)啟

  1. 登錄容器服務(wù)管理控制臺(tái),在左側(cè)導(dǎo)航欄選擇集群

  2. 集群列表頁(yè)面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇集群信息

  3. 基本信息頁(yè)簽的安全與審計(jì)區(qū)域,單擊RRSA OIDC右側(cè)的開(kāi)啟image

  4. 在彈出的啟用RRSA對(duì)話框,單擊確定

    基本信息區(qū)域,當(dāng)集群狀態(tài)由更新中變?yōu)?b data-tag="uicontrol" id="uicontrol-2ns-z5u-0u2" class="uicontrol">運(yùn)行中后,表明該集群的RRSA特性已變更完成。

獲取集群中OIDC提供商的URL和ARN信息

集群中RRSA功能開(kāi)啟后,在基本信息頁(yè)簽的安全與審計(jì)區(qū)域,將鼠標(biāo)懸浮至RRSA OIDC右側(cè)已開(kāi)啟上面,即可查看提供商的URL鏈接和ARN信息。image

集群開(kāi)啟RRSA功能后,ACK將在后臺(tái)執(zhí)行如下操作。

  • 自動(dòng)創(chuàng)建一個(gè)集群專用的OIDC Issuer服務(wù)。該服務(wù)由ACK托管,無(wú)需您運(yùn)維。更多信息,請(qǐng)參見(jiàn)OIDC Issuer

  • 修改當(dāng)前集群的服務(wù)賬戶令牌卷投影功能的配置,使用本次創(chuàng)建的OIDC Issuer配置合并集群已有的service-account-issuer參數(shù)的值。更多信息,請(qǐng)參見(jiàn)使用ServiceAccount Token卷投影

  • 在您的賬號(hào)下創(chuàng)建一個(gè)使用該OIDC Issuer的OIDC身份提供商,名稱為ack-rrsa-<cluster_id>,其中 <cluster_id>為您的集群ID。更多信息,請(qǐng)參見(jiàn)管理OIDC身份提供商

使用RRSA功能

集群開(kāi)啟RRSA功能后,您可以參考以下內(nèi)容,賦予集群內(nèi)應(yīng)用通過(guò)RRSA功能獲取訪問(wèn)云資源OpenAPI的臨時(shí)憑證的能力。

使用示例

本示例部署的應(yīng)用將使用RRSA功能扮演指定角色,獲取當(dāng)前賬號(hào)下集群列表信息。

示例配置

  • 命名空間:rrsa-demo

  • ServiceAccount:demo-sa

  • RAM角色:demo-role-for-rrsa

示例流程

使用示例流程

  • 如果您希望通過(guò)不安裝ack-pod-identity-webhook組件的方式使用RRSA功能,您可以手動(dòng)修改應(yīng)用模板掛載應(yīng)用所需的OIDC Token文件并配置相關(guān)環(huán)境變量。具體操作,請(qǐng)參見(jiàn)手動(dòng)修改應(yīng)用模板使用RRSA功能

  • 如果您希望使用已存在的RAM角色,不創(chuàng)建新的RAM角色,您可以為已有RAM角色新增相關(guān)權(quán)限。具體操作,請(qǐng)參見(jiàn)使用已存在的RAM角色并授權(quán)

  1. 安裝ack-pod-identity-webhook組件。

    1. 集群列表頁(yè)面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇運(yùn)維管理 > 組件管理

    2. 組件管理頁(yè)面,單擊安全頁(yè)簽,找到ack-pod-identity-webhook組件,單擊組件右下方的安裝

    3. 在提示對(duì)話框確認(rèn)組件信息后,單擊確定

  2. 創(chuàng)建一個(gè)名為demo-role-for-rrsa的RAM角色。

    1. 使用阿里云賬號(hào)登錄RAM控制臺(tái)

    2. 在左側(cè)導(dǎo)航欄,選擇身份管理 > 角色,然后在角色頁(yè)面,單擊創(chuàng)建角色

    3. 創(chuàng)建角色面板,選擇可信實(shí)體類型為身份提供商,然后單擊下一步

    4. 配置角色頁(yè)面,配置如下角色信息后,單擊完成

      本示例配置如下。

      配置項(xiàng)

      描述

      角色名稱

      demo-role-for-rrsa。

      備注

      選填有關(guān)該角色的備注信息。

      身份提供商類型

      OIDC

      選擇身份提供商

      ack-rrsa-<cluster_id>。其中,<cluster_id>為您的集群ID。

      限制條件

      • oidc:iss:保持默認(rèn)。

      • oidc:aud:選擇sts.aliyuncs.com

      • oidc:sub:條件判定方式選擇StringEquals,值的格式為system:serviceaccount:<namespace>:<serviceAccountName>

        • <namespace>:應(yīng)用所在的命名空間。

        • <serviceAccountName>:服務(wù)賬戶名稱。

        根據(jù)測(cè)試應(yīng)用的信息,此處需要填入system:serviceaccount:rrsa-demo:demo-sa

  3. 步驟2創(chuàng)建的角色授予測(cè)試應(yīng)用所需的AliyunCSReadOnlyAccess系統(tǒng)策略權(quán)限。具體操作,請(qǐng)參見(jiàn)為RAM角色授權(quán)

  4. 部署測(cè)試應(yīng)用。關(guān)于測(cè)試應(yīng)用的參考代碼,請(qǐng)參見(jiàn)阿里云官方SDK使用RRSA OIDC Token的參考代碼

    1. 使用以下內(nèi)容,創(chuàng)建demo.yaml文件。

      如下YAML示例中,為命名空間增加標(biāo)簽pod-identity.alibabacloud.com/injection: 'on',并為服務(wù)賬戶增加注解pod-identity.alibabacloud.com/role-name: demo-role-for-rrsa,啟用ack-pod-identity-webhook組件的配置自動(dòng)注入功能。關(guān)于ack-pod-identity-webhook組件配置的更多說(shuō)明,請(qǐng)參見(jiàn)ack-pod-identity-webhook

      展開(kāi)查看示例代碼

      ---
      apiVersion: v1
      kind: Namespace
      metadata:
        name: rrsa-demo
        labels:
          pod-identity.alibabacloud.com/injection: 'on'
      
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: demo-sa
        namespace: rrsa-demo
        annotations:
          pod-identity.alibabacloud.com/role-name: demo-role-for-rrsa
      
      ---
      apiVersion: v1
      kind: Pod
      metadata:
        name: demo
        namespace: rrsa-demo
      spec:
        serviceAccountName: demo-sa
        containers:
          - image: registry.cn-hangzhou.aliyuncs.com/acs/ack-ram-tool:1.0.0
            imagePullPolicy: "Always"
            args:
              - rrsa
              - demo
            name: demo
        restartPolicy: OnFailure
    2. 執(zhí)行以下命令,部署測(cè)試應(yīng)用。

      kubectl apply -f demo.yaml
  5. 執(zhí)行以下命令,查看測(cè)試應(yīng)用Pod,確認(rèn)ack-pod-identity-webhook組件已為Pod自動(dòng)注入所需的配置。

    kubectl -n rrsa-demo get pod demo -o yaml

    展開(kāi)查看預(yù)期輸出

    apiVersion: v1
    kind: Pod
    metadata:
      name: demo
      namespace: rrsa-demo
    spec:
      containers:
      - args:
        - rrsa
        - demo
        env:
        - name: ALIBABA_CLOUD_ROLE_ARN
          value: acs:ram::1***:role/demo-role-for-rrsa
        - name: ALIBABA_CLOUD_OIDC_PROVIDER_ARN
          value: acs:ram::1***:oidc-provider/ack-rrsa-c***
        - name: ALIBABA_CLOUD_OIDC_TOKEN_FILE
          value: /var/run/secrets/ack.alibabacloud.com/rrsa-tokens/token
        image: registry.cn-hangzhou.aliyuncs.com/acs/ack-ram-tool:1.0.0
        imagePullPolicy: Always
        name: demo
        volumeMounts:
        - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
          name: kube-api-access-4bwdg
          readOnly: true
        - mountPath: /var/run/secrets/ack.alibabacloud.com/rrsa-tokens
          name: rrsa-oidc-token
          readOnly: true
      restartPolicy: OnFailure
      serviceAccount: demo-sa
      serviceAccountName: demo-sa
      volumes:
      - name: kube-api-access-4bwdg
        projected:
          defaultMode: 420
          sources:
          - serviceAccountToken:
              expirationSeconds: 3607
              path: token
          - configMap:
              items:
              - key: ca.crt
                path: ca.crt
              name: kube-root-ca.crt
          - downwardAPI:
              items:
              - fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.namespace
                path: namespace
      - name: rrsa-oidc-token
        projected:
          defaultMode: 420
          sources:
          - serviceAccountToken:
              audience: sts.aliyuncs.com
              expirationSeconds: 3600
              path: token

    預(yù)期輸出表明,ack-pod-identity-webhook組件已為Pod自動(dòng)注入了如下配置。

    類別

    配置項(xiàng)名稱

    配置項(xiàng)說(shuō)明

    環(huán)境變量

    ALIBABA_CLOUD_ROLE_ARN

    需要扮演的RAM角色ARN。

    ALIBABA_CLOUD_OIDC_PROVIDER_ARN

    OIDC身份提供商的ARN。

    ALIBABA_CLOUD_OIDC_TOKEN_FILE

    包含OIDC Token的文件路徑。

    VolumeMount

    rrsa-oidc-token

    掛載OIDC Token的配置。

    Volume

    rrsa-oidc-token

    掛載OIDC Token的配置。

  6. 執(zhí)行以下命令,查看測(cè)試應(yīng)用日志。

    kubectl -n rrsa-demo logs demo

    預(yù)期輸出集群列表信息:

    cluster id: cf***, cluster name: foo*
    cluster id: c8***, cluster name: bar*
    cluster id: c4***, cluster name: foob*
  7. 可選:移除角色被授予的AliyunCSReadOnlyAccess系統(tǒng)策略權(quán)限。具體操作,請(qǐng)參見(jiàn)為RAM角色移除權(quán)限

    等待30秒左右,執(zhí)行以下命令,再次查看測(cè)試應(yīng)用日志。

    kubectl -n rrsa-demo logs demo

    預(yù)期輸出無(wú)權(quán)限的錯(cuò)誤日志:

       StatusCode: 403
       Code: StatusForbidden
       Message: code: 403, STSToken policy Forbidden for action cs:DescribeClusters request id: E78A2E2D-***
       Data: {"accessDeniedDetail":{"AuthAction":"cs:DescribeClusters","AuthPrincipalDisplayName":"demo-role-for-rrsa:ack-ram-tool","AuthPrincipalOwnerId":"11***","AuthPrincipalType":"AssumedRoleUser","NoPermissionType":"ImplicitDeny","PolicyType":"ResourceGroupLevelIdentityBasedPolicy"},"code":"StatusForbidden","message":"STSToken policy Forbidden for action cs:DescribeClusters","requestId":"E78A2E2D-***","status":403,"statusCode":403}

手動(dòng)修改應(yīng)用模板使用RRSA功能

您可以通過(guò)手動(dòng)修改應(yīng)用模板掛載應(yīng)用所需的OIDC Token文件以及配置相關(guān)環(huán)境變量,在不安裝ack-pod-identity-webhook組件的情況下使用RRSA功能。

應(yīng)用模板示例代碼如下。

展開(kāi)查看應(yīng)用模板示例代碼

apiVersion: v1
kind: Pod
metadata:
  name: demo
  namespace: rrsa-demo
spec:
  containers:
  - args:
    - rrsa
    - demo
    env:
    - name: ALIBABA_CLOUD_ROLE_ARN
      value: <role_arn>
    - name: ALIBABA_CLOUD_OIDC_PROVIDER_ARN
      value: <oid_provider_arn>
    - name: ALIBABA_CLOUD_OIDC_TOKEN_FILE
      value: /var/run/secrets/ack.alibabacloud.com/rrsa-tokens/token
    image: registry.cn-hangzhou.aliyuncs.com/acs/ack-ram-tool:1.0.0
    imagePullPolicy: Always
    name: demo
    volumeMounts:
    - mountPath: /var/run/secrets/ack.alibabacloud.com/rrsa-tokens
      name: rrsa-oidc-token
      readOnly: true
  restartPolicy: OnFailure
  serviceAccount: demo-sa
  serviceAccountName: demo-sa
  volumes:
  - name: rrsa-oidc-token
    projected:
      defaultMode: 420
      sources:
      - serviceAccountToken:
          audience: sts.aliyuncs.com
          expirationSeconds: 3600
          path: token
重要

請(qǐng)?zhí)鎿Q應(yīng)用模板示例代碼中的如下字段。

  • <oid_provider_arn>:替換為當(dāng)前集群的OIDC提供商ARN。該ARN獲取請(qǐng)參見(jiàn)獲取集群中OIDC提供商的URL和ARN信息

  • <role_arn>需要替換為當(dāng)前應(yīng)用使用的RAM角色ARN。該ARN可在RAM控制臺(tái)角色頁(yè)面的角色詳情頁(yè)面獲取。

  • audience字段值必須為sts.aliyuncs.com。該字段值對(duì)應(yīng)的是開(kāi)啟RRSA功能時(shí)自動(dòng)創(chuàng)建的OIDC身份提供商中配置的客戶端ID,與SDK訪問(wèn)STS的AssumeRoleWithOIDC接口時(shí)使用的域名無(wú)關(guān),您可以在使用SDK時(shí)指定使用合適的STS域名。

  • expirationSeconds:?jiǎn)挝粸槊耄≈捣秶鸀閇600, 43200],即10分鐘~12小時(shí)。如果設(shè)置的值大于43200(12小時(shí)),實(shí)際的OIDC Token的過(guò)期時(shí)間仍為12小時(shí)。

部署修改后的應(yīng)用模板后,應(yīng)用內(nèi)程序可以使用容器內(nèi)掛載的OIDC Token(環(huán)境變量ALIBABA_CLOUD_OIDC_TOKEN_FILE指向的文件內(nèi)容,每次使用時(shí)都需要從文件中讀取最新的Token)、角色的ARN(環(huán)境變量ALIBABA_CLOUD_ROLE_ARN配置的值)以及OIDC身份提供商的ARN(環(huán)境變量ALIBABA_CLOUD_OIDC_PROVIDER_ARN配置的值),調(diào)用STS的AssumeRoleWithOIDC接口,獲取一個(gè)扮演指定RAM角色的臨時(shí)憑證,然后使用該臨時(shí)憑證訪問(wèn)云資源OpenAPI。應(yīng)用參考代碼,請(qǐng)參見(jiàn)阿里云官方SDK使用RRSA OIDC Token的參考代碼。更多信息,請(qǐng)參見(jiàn)AssumeRoleWithOIDC

使用已存在的RAM角色并授權(quán)

如果您的應(yīng)用需要使用已存在的RAM角色,而非創(chuàng)建新的單獨(dú)RAM角色,您可以修改RAM角色的信任策略,新增一條允許使用指定的服務(wù)賬戶的應(yīng)用有權(quán)限通過(guò)扮演此RAM角色獲取臨時(shí)憑證的信任策略。更多信息,請(qǐng)參見(jiàn)修改RAM角色的信任策略

RAM角色信任策略中新增的Statement條目?jī)?nèi)容示例如下。

{
  "Action": "sts:AssumeRole",
  "Condition": {
    "StringEquals": {
      "oidc:aud": "sts.aliyuncs.com",
      "oidc:iss": "<oidc_issuer_url>",
      "oidc:sub": "system:serviceaccount:<namespace>:<service_account>"
    }
  },
  "Effect": "Allow",
  "Principal": {
    "Federated": [
      "<oidc_provider_arn>"
    ]
  }
}
重要

請(qǐng)?zhí)鎿QStatement條目?jī)?nèi)容示例中的如下字段。

您也可以使用命令行工具ack-ram-tool通過(guò)自動(dòng)化的方式配置該策略。對(duì)應(yīng)的命令行示例如下。

ack-ram-tool rrsa associate-role --cluster-id <cluster_id> \
    --namespace <namespace> --service-account <service_account> \
    --role-name <role_name> --create-role-if-not-exist

阿里云官方SDK使用RRSA OIDC Token的參考代碼

SDK參考代碼

目前,阿里云V2.0 SDK已經(jīng)內(nèi)置了支持使用RRSA OIDC Token進(jìn)行OpenAPI認(rèn)證的功能,所有基于V2.0 SDK生成并且支持STS Token認(rèn)證的云產(chǎn)品SDK都將默認(rèn)支持RRSA OIDC Token認(rèn)證。支持此功能的SDK版本信息和參考代碼如下。

編程語(yǔ)言

支持認(rèn)證的SDK版本

使用示例

Go

Alibaba Cloud Credentials for Go 1.2.6及以上版本。更多信息,請(qǐng)參考方式六:使用OIDCRoleArn

Go SDK使用示例

Java

Alibaba Cloud Credentials for Java 0.2.10及以上版本。更多信息,請(qǐng)參考方式六:使用OIDCRoleArn

Java SDK使用示例

Python 3

Alibaba Cloud Credentials for Python 0.3.1及以上版本。更多信息,請(qǐng)參考方式六:使用OIDCRoleArn

Python 3 SDK使用示例

Node.js和TypeScript

Alibaba Cloud Credentials for TypeScript/Node.js 2.2.6及以上版本。更多信息,請(qǐng)參考方式六:使用OIDCRoleArn

Node.js和TypeScript使用示例

部分云產(chǎn)品自研的SDK也可以參考上面的方法實(shí)現(xiàn)使用RRSA OIDC Token進(jìn)行OpenAPI認(rèn)證的功能。具體實(shí)現(xiàn)方式的參考代碼如下。

云產(chǎn)品

SDK

使用示例

對(duì)象存儲(chǔ)

OSS GO SDK

更多信息,請(qǐng)參考方式五:使用OIDCRoleARN

Go SDK使用示例

OSS Java SDK

更多信息,請(qǐng)參考方式六:使用OIDCRoleARN

Java SDK使用示例

OSS Python SDK

更多信息,請(qǐng)參考方式六:使用OIDCRoleARN

Python SDK使用示例

日志服務(wù)

日志服務(wù)Java SDK

更多信息,請(qǐng)參考Java SDK快速入門(mén)

Java SDK使用示例

SDK報(bào)錯(cuò)信息解決方法

不同報(bào)錯(cuò)信息的解決方法如下表所示。

報(bào)錯(cuò)信息

原因

解決方法

{
 "Code": "AuthenticationFail.OIDCToken.Expired",
 "Message": "This JsonWebToken is expired."
}

您的應(yīng)用使用的OIDC Token已過(guò)期。

您需要每次都從環(huán)境變量ALIBABA_CLOUD_OIDC_TOKEN_FILE指向的文件中讀取最新的OIDC Token。建議您使用阿里云官方SDK而不是自行實(shí)現(xiàn)獲取臨時(shí)憑證的邏輯。更多信息,請(qǐng)參見(jiàn)阿里云官方SDK使用RRSA OIDC Token的參考代碼

{
 "Code": "Throttling.User",
 "Message": "Request was denied due to user flow control."
}

您的應(yīng)用獲取臨時(shí)憑證的操作太頻繁,導(dǎo)致操作被限流。

請(qǐng)勿過(guò)于頻繁調(diào)用獲取臨時(shí)憑證的接口,在臨時(shí)憑證過(guò)期前您無(wú)需頻繁獲取新的憑證。建議您使用阿里云官方SDK而不是自行實(shí)現(xiàn)獲取臨時(shí)憑證的邏輯。更多信息,請(qǐng)參見(jiàn)阿里云官方SDK使用RRSA OIDC Token的參考代碼

{
 "Code": "AuthenticationFail.OIDCToken.AudienceNotMatch",
 "Message": "Invalid audience."
}

您的應(yīng)用模板中audience配置項(xiàng)的值不是sts.aliyuncs.com

您需要修改應(yīng)用模板,確保配置項(xiàng)audience的值是預(yù)期的sts.aliyuncs.com

{
 "Code": "AuthenticationFail.OIDCToken.IssuerConfigurationBroken",
 "Message": "Get public keys from OIDC Provider failed, the issuer is https://kubernetes.default.svc."
}
{
 "Code": "AuthenticationFail.OIDCToken.IssuerNotMatch",
 "Message": "The issuer in the OIDC Token doesn't match the OIDC Provider registered."
}
{
 "Code": "AuthenticationFail.NoPermission",
 "Message": "No such OIDC Provider registered."
}

您的集群未啟用RRSA功能。

您需要為應(yīng)用所在集群?jiǎn)⒂肦RSA功能。操作方法,請(qǐng)參見(jiàn)啟用RRSA功能。完成啟用RRSA功能操作后,您還需要重建使用RRSA功能的應(yīng)用Pod。

{
 "Code": "EntityNotExist.Role",
 "Message": "The role not exists: acs:ram::19981***:role/***. "
}

您的應(yīng)用所使用的RAM角色不存在。

您需要?jiǎng)?chuàng)建對(duì)應(yīng)的RAM角色。操作方法,請(qǐng)參見(jiàn)創(chuàng)建OIDC身份提供商的RAM角色以及使用示例

{
  "Code": "AuthenticationFail.NoPermission",
  "Message": "There is no permission"
}

您的應(yīng)用所使用的RAM角色未完成所需的信任策略配置。

您需要修改RAM角色的信任策略,允許您的應(yīng)用扮演該角色。操作方法,請(qǐng)參見(jiàn)使用已存在的RAM角色并授權(quán)

常用命令行工具使用RRSA OIDC Token

借助ack-ram-tool,可以賦予部分常用命令行工具在容器內(nèi)使用RRSA OIDC Token的能力。具體配置和使用示例詳見(jiàn)下表。

命令行工具

配置方法

使用示例

阿里云CLI

您可以在配置文件~/.aliyun/config.json中將mode配置項(xiàng)的值設(shè)置為OIDC的方式使用RRSA OIDC Token。

說(shuō)明
  • 僅v3.0.206及以上版本的阿里云CLI支持該特性。

  • 需要將配置文件中region_id的值替換為您期望的地域。

{
  "current": "rrsa",
  "profiles": [
    {
      "name": "rrsa",
      "mode": "OIDC",
      "region_id": "cn-hangzhou",
      "ram_session_name": "test-rrsa"
    }
  ],
  "meta_path": ""
}
$ aliyun sts GetCallerIdentity
{
    "AccountId": "11380***",
    "Arn": "acs:ram::1138***:assumed-role/test-rrsa-***/test-rrsa",
    "IdentityType": "AssumedRoleUser",
    "PrincipalId": "33300***:test-rrsa",
    "RequestId": "20F78881-F47E-5771-90D6-***",
    "RoleId": "33300***"
}

您也可以不創(chuàng)建配置文件,直接執(zhí)行阿里云CLI相關(guān)命令。

說(shuō)明

僅v3.0.206及以上版本的阿里云CLI支持該特性。

$ aliyun sts GetCallerIdentity --region cn-hangzhou --role-session-name=test-rrsa
{
	"AccountId": "11380***",
	"Arn": "acs:ram::1138***:assumed-role/test-rrsa-***/test-rrsa",
	"IdentityType": "AssumedRoleUser",
	"PrincipalId": "33300***:test-rrsa",
	"RequestId": "20F78881-F47E-5771-90D6-***",
	"RoleId": "33300***"
}

日志服務(wù)CLI

暫不支持在日志服務(wù)CLI的配置文件中指定使用RRSA OIDC Token,您需要使用命令ack-ram-tool export-credentials -f environment-variables -- aliyunlog執(zhí)行日志服務(wù)CLI相關(guān)命令。

$ ack-ram-tool export-credentials -f environment-variables -- aliyunlog log list_project --region-endpoint=cn-hangzhou.log.aliyuncs.com

{"count": 1, "projects": [
{"createTime": "1676282996", "description": "k8s log project, ***",
 "lastModifyTime": "1676282996", "owner": "", "projectName": "k8s-log-c0edc***", 
 "region": "cn-hangzhou", "resourceGroupId": "rg-***", "status": "Normal"}],
  "total": 24}

Terraform

您可以在配置文件中通過(guò)配置assume_role_with_oidc配置項(xiàng)的方式使用RRSA OIDC Token。

說(shuō)明
  • 僅v1.222.0及以上版本的阿里云Provider支持該配置項(xiàng)。

  • 需要將配置文件中region的值替換為您期望的地域。

provider "alicloud" {
  assume_role_with_oidc {
    role_session_name = "terraform-with-rrsa-auth-example"
  }
  region = "cn-hangzhou"
}

Terraform使用示例

相關(guān)文檔