Tous les produits
Search
Centre de documentation

Container Compute Service:Configurer les permissions au niveau des pods avec RRSA

Dernière mise à jour :Aug 12, 2026

RAM Roles for Service Accounts (RRSA) permet d'isoler les permissions OpenAPI au niveau des pods au sein de votre cluster. Cette fonctionnalité offre un contrôle granulaire sur l'accès aux ressources cloud et réduit les risques de sécurité. Cette rubrique explique comment utiliser la fonctionnalité RRSA.

Contexte

OIDC (OpenID Connect) est un protocole d'authentification basé sur OAuth 2.0. Alibaba Cloud RAM prend en charge le SSO de rôle basé sur OIDC. Les applications d'un cluster Kubernetes utilisent des identifiants temporaires fournis par Security Token Service (STS) pour accéder aux API des ressources cloud. Alibaba Cloud Container Service (ACS) prend en charge RRSA. Dans les scénarios multi-locataires, RRSA assure une isolation fine des permissions d'accès aux ressources cloud entre les pods d'applications d'un même cluster. Avec ACS, RRSA permet également de contrôler la durée de validité des identifiants temporaires.

RRSA fonctionne comme suit :

  1. Déployez un pod d'application utilisant la fonctionnalité de projection de volume de jeton de compte de service.

    Remarque

    La projection de volume de jeton de compte de service est activée par défaut dans les clusters ACS.

  2. Le cluster crée et monte le fichier de jeton OIDC du compte de service correspondant pour le pod d'application.

  3. L'application du pod utilise le fichier de jeton OIDC monté pour appeler l'API STS AssumeRoleWithOIDC afin d'obtenir un identifiant temporaire pour un rôle RAM spécifié.

    Remarque

    Vous devez modifier au préalable la politique de confiance du rôle RAM pour autoriser le compte de service du pod à endosser ce rôle. Pour plus d'informations, consultez AssumeRoleWithOIDC.

  4. L'application du pod utilise l'identifiant temporaire obtenu pour accéder aux API des ressources cloud.

Activer RRSA

  1. Connectez-vous à la console ACS. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, choisissez Cluster Information.

  3. Sur la page de détails du cluster, cliquez sur l'onglet Basic Information. Dans la section Security and Auditing, cliquez sur Enable en regard de RRSA OIDC.

  4. Dans la boîte de dialogue Enable RRSA, cliquez sur OK.

    Remarque
    • L'activation de la fonctionnalité RRSA prend environ 2 à 3 minutes. Si le Cluster Status reste à l'état Updating, cliquez sur le bouton imageimage situé dans le coin supérieur droit de la page pour actualiser l'affichage.

    • Lorsque l'état du cluster passe de Updating à Running, la fonctionnalité RRSA est activée pour le cluster. Passez la souris sur Enabled en regard de RRSA OIDC pour afficher l'URL et l'ARN du fournisseur d'identité OIDC.

Une fois la fonctionnalité RRSA activée pour un cluster, la console ACS effectue les opérations suivantes en arrière-plan :

  • Elle crée automatiquement un service OIDC Issuer dédié pour le cluster. Ce service est géré par ACS et ne nécessite aucune maintenance manuelle.

  • Elle crée un fournisseur d'identité OIDC dans votre compte, utilisant cet OIDC Issuer. Le fournisseur d'identité OIDC est nommé ack-rrsa-<cluster_id>, où <cluster_id> correspond à l'ID de votre cluster.

Utiliser RRSA

Après avoir activé la fonctionnalité RRSA, suivez ces étapes pour permettre aux applications de votre cluster d'obtenir des identifiants temporaires afin d'accéder aux API des ressources cloud via RRSA.

Créer et autoriser un nouveau rôle RAM

Remarque

Pour utiliser un rôle RAM existant au lieu d'en créer un nouveau, vous pouvez ajouter les permissions requises au rôle RAM existant.

L'application déployée dans cet exemple utilise la fonctionnalité RRSA pour endosser un rôle spécifié et récupérer la liste des clusters du compte actuel. Les principales ressources utilisées sont les suivantes :

  • Namespace : rrsa-demo.

  • Compte de service : demo-sa.

  • Rôle RAM : demo-role-for-rrsa.

  1. Créez un rôle RAM nommé demo-role-for-rrsa.

    1. Connectez-vous à la console RAM avec votre compte Alibaba Cloud.

    2. Dans le volet de navigation de gauche, choisissez Identities > Roles. Sur la page Roles, cliquez sur Create Role.

    3. Dans le panneau Create Role, cliquez sur Switch to Policy Editor pour créer un rôle.

    4. Dans l'onglet Visual Editor, configurez les informations du rôle comme décrit dans le tableau suivant, puis cliquez sur OK.

      Paramètre

      Description

      Effect

      La valeur par défaut est Allow.

      Principal

      Sélectionnez Identity Provider et cliquez sur Edit.

      Définissez le type de fournisseur d'identité sur OIDC et sélectionnez le fournisseur d'identité OIDC du cluster, par exemple ack-rrsa-<cluster_id>. <cluster_id> correspond à l'ID de votre cluster.

      Action

      Par défaut, sts:AssumeRole est sélectionné.

      Condition

      • oidc:iss : cette condition est ajoutée automatiquement après la sélection du Identity Provider. Conservez le paramètre par défaut.

      • oidc:aud : cette condition est ajoutée automatiquement après la sélection du Identity Provider. Conservez le paramètre par défaut.

      • oidc:sub : vous devez ajouter manuellement cette condition en cliquant sur Add Condition.

        • Key : oidc:sub

        • Operator : StringEquals

        • Value : le format est system:serviceaccount:<namespace>:<serviceAccountName>.

          • <namespace> : le namespace où réside l'application.

          • <serviceAccountName> : le nom du compte de service.

          Selon les informations de l'application de test, saisissez system:serviceaccount:rrsa-demo:demo-sa.

    5. Dans la boîte de dialogue qui s'affiche, saisissez le nom du rôle demo-role-for-rrsa et cliquez sur OK.

  2. Accordez au rôle créé la politique système AliyunCSReadOnlyAccess, requise par l'application de test. Pour plus d'informations, consultez Gérer les permissions d'un rôle RAM.

  3. Déployez l'application de test.

    1. Créez un fichier nommé demo.yaml avec le contenu suivant.

      Remarque

      Remplacez les espaces réservés suivants dans le modèle d'application d'exemple.

      • <role_arn> : remplacez cette valeur par l'ARN du rôle RAM utilisé par l'application. Vous pouvez obtenir l'ARN dans le champ ARN de la page Basic Information du rôle sur la console RAM.

      • <oidc_provider_arn> : remplacez cette valeur par l'ARN du fournisseur OIDC du cluster. Vous pouvez obtenir cet ARN en passant la souris sur Enabled en regard de RRSA OIDC dans l'onglet Basic Information de la page Cluster Information.

      Développer pour voir le code d'exemple

      ---
      apiVersion: v1
      kind: Namespace
      metadata:
        name: rrsa-demo
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: demo-sa
        namespace: rrsa-demo
      ---
      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: <oidc_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  # Unit: seconds. Valid values: [600, 43200], which means 10 minutes to 12 hours.
                path: token
    2. Exécutez la commande suivante pour déployer l'application de test.

      kubectl apply -f demo.yaml

      Une fois l'application déployée, l'application peut utiliser le jeton OIDC monté, l'ARN du rôle RAM et l'ARN du fournisseur d'identité OIDC pour appeler l'API AssumeRoleWithOIDC de STS afin d'obtenir un identifiant temporaire pour le rôle RAM spécifié. L'application utilise ensuite cet identifiant temporaire pour accéder aux API des ressources cloud. Pour plus d'informations, consultez AssumeRoleWithOIDC.

  4. Exécutez la commande suivante pour consulter les journaux de l'application de test.

    kubectl -n rrsa-demo logs demo

    Le résultat attendu est une liste de clusters ACK :

    20**/**/** 08:35:23 ======= [begin] list ACK clusters with RRSA =======
    clusters:
    cluster id: cf***, cluster name: foo*
    cluster id: c8***, cluster name: bar*
    cluster id: c4***, cluster name: foob*
    20**/**/** 08:35:24 ======= [end]   list ACK clusters with RRSA =======
  5. Facultatif : Détachez la politique système AliyunCSReadOnlyAccess du rôle. Pour plus d'informations, consultez Supprimer les permissions d'un rôle RAM.

    Patientez environ 30 secondes, puis exécutez la commande suivante pour consulter à nouveau les journaux de l'application :

    kubectl -n rrsa-demo logs demo

    Une erreur de refus d'autorisation est attendue :

    20**/**/** 10:09:33 ======= [begin] list ACK clusters with RRSA =======
    20**/**/** 10:09:33 SDKError:
       StatusCode: 403
       Code: StatusForbidden
       Message: code: 403, STSToken policy Forbidden for action cs:DescribeClusters request id: XXXX
       Data: {"accessDeniedDetail":{"AuthAction":"cs:DescribeClusters","AuthPrincipalDisplayName":"demo-role-for-rrsa:ack-ram-tool","AuthPrincipalOwnerId":"XXXX","AuthPrincipalType":"AssumedRoleUser","EncodedDiagnosticMessage":"XXXX","NoPermissionType":"ImplicitDeny","PolicyType":"ResourceGroupLevelIdentityBasedPolicy"},"code":"StatusForbidden","message":"STSToken policy Forbidden for action cs:DescribeClusters","requestId":"XXXX","status":403,"statusCode":403}

Autoriser un rôle RAM existant

Si votre application doit utiliser un rôle RAM existant plutôt qu'un nouveau, modifiez la politique de confiance du rôle RAM en ajoutant une instruction permettant aux applications utilisant un compte de service spécifique d'endosser ce rôle et d'obtenir des identifiants temporaires. Pour plus d'informations, consultez Modifier la politique de confiance d'un rôle RAM.

Le code suivant montre un exemple d'entrée Statement à ajouter à la politique de confiance du rôle RAM.

Remarque

Remplacez les espaces réservés suivants dans l'exemple d'entrée Statement.

  • <oidc_issuer_url> : remplacez cette valeur par l'URL du fournisseur OIDC du cluster. Vous pouvez obtenir l'URL en passant la souris sur Enabled en regard de RRSA OIDC dans l'onglet Basic Information de la page Cluster Information.

  • <oidc_provider_arn> : remplacez cette valeur par l'ARN du fournisseur OIDC du cluster. Vous pouvez obtenir l'ARN en passant la souris sur Enabled en regard de RRSA OIDC dans l'onglet Basic Information de la page Cluster Information.

  • <namespace> : remplacez cette valeur par le namespace où réside l'application.

  • <service_account> : remplacez cette valeur par le compte de service utilisé par l'application.

{
  "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>"
    ]
  }
}

Références