Tous les produits
Search
Centre de documentation

Realtime Compute for Apache Flink:Use a RAM role to access cloud resources (Beta)

Dernière mise à jour :Aug 29, 2026

Realtime Compute for Apache Flink prend en charge l'utilisation de rôles RAM dans les namespaces. En endossant un rôle RAM, les jobs utilisent des jetons STS temporaires au lieu de paires AccessKey en clair pour accéder aux ressources Alibaba Cloud. Cette approche permet un accès sans identifiants statiques, un contrôle granulaire des autorisations et une gestion des identifiants ne nécessitant aucune maintenance.

Vue d'ensemble

En référençant un rôle RAM, vous permettez aux jobs Flink d'accéder à d'autres services Alibaba Cloud, tels que OSS et KMS, sans exposer de paires AccessKey en clair dans le code du job.

Principaux avantages :

  • Protection des informations sensibles : Aucune paire AccessKey n'est exposée dans les jobs. Le jeton STS du rôle RAM remplace les identifiants statiques.

  • Contrôle granulaire des autorisations : Les politiques d'autorisation des rôles RAM sont personnalisables. Différents connecteurs peuvent utiliser différents rôles pour appliquer le principe du moindre privilège.

  • Identifiants sans maintenance : Le système obtient et renouvelle automatiquement les jetons STS, éliminant ainsi la nécessité de gérer la rotation des identifiants.

Pour plus de détails, consultez l'Annexe : Flux d'appel STS.

Notes

La suppression ou la modification incorrecte des autorisations et de la politique de confiance d'un rôle RAM dans RAM peut entraîner l'échec des jobs Flink, car ils ne peuvent plus accéder aux ressources cloud. Conformément à l'Accord de niveau de service pour Realtime Compute for Apache Flink, l'indisponibilité causée par une utilisation incorrecte des ressources par les clients n'est pas couverte par le SLA.

Limites

  • Seuls les moteurs VVR 11.8 et versions ultérieures sont pris en charge. Le connecteur OSS et le connecteur Postgres CDC prennent en charge l'accès aux ressources cloud avec des rôles RAM.

  • Vous pouvez référencer jusqu'à 10 rôles RAM par espace de travail.

  • Une seule opération d'ajout permet de sélectionner jusqu'à 5 rôles.

  • Seuls les rôles de service réguliers (SR) peuvent être référencés. Les rôles liés au service (SLR) ne sont pas pris en charge.

  • Les jetons STS ne sont pas pris en charge pour le débogage local des jobs PyFlink et Flink JAR. Vous devez déployer les jobs sur un cluster avant de les utiliser.

  • Seule l'authentification d'identité RAM pour les services Alibaba Cloud est prise en charge.

Préparation des autorisations

Étape 1 : Créer et configurer un rôle RAM

Ce rôle constitue l'identifiant d'identité que le service Flink utilise pour accéder à d'autres ressources cloud. Flink endosse ce rôle pour obtenir des identifiants temporaires et accéder aux ressources cloud en tant que ce rôle.

1. Créer un rôle RAM

  1. Connectez-vous à la page Console RAM - Rôles et cliquez sur Create Role. Conservez les options par défaut (l'entité de confiance est le compte Alibaba Cloud actuel) et cliquez sur OK.

  2. Saisissez un nom de rôle reconnaissable, par exemple FlinkRoleForOSSRead, et cliquez sur OK.

2. Ajouter une politique de confiance

Flink endosse le rôle RAM pour obtenir des identifiants temporaires. Le rôle RAM doit faire confiance à Flink pour pouvoir l'endosser.

Après la création du rôle, sur la page des détails du rôle, cliquez sur l'onglet Trust Policy puis sur Edit Trust Policy. Ajoutez "Service": ["stream.aliyuncs.com"] à Principal pour autoriser Flink à endosser le rôle. Pour plus d'informations, consultez Modifier la politique de confiance d'un rôle RAM.

{
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "stream.aliyuncs.com"
        ]
      }
    }
  ],
  "Version": "1"
}

3. Accorder des autorisations pour accéder aux ressources cloud

Flink utilise l'identité du rôle RAM pour accéder aux ressources cloud. Accordez à l'avance les autorisations nécessaires au rôle RAM afin d'éviter les erreurs d'accès.

Sur la page des détails du rôle, cliquez sur l'onglet Permissions puis sur Grant Permission pour accorder au rôle les autorisations d'accès aux ressources cloud cibles.

Par exemple, pour accéder à OSS, accordez les autorisations AliyunOSSReadOnlyAccess (lecture seule) ou AliyunOSSFullAccess (accès complet). Pour plus d'informations, consultez Accorder des autorisations à un rôle RAM.

Étape 2 : Accorder des autorisations à un utilisateur RAM

Créez une stratégie d'autorisation et attribuez-la à l'utilisateur RAM. Cela permet à l'utilisateur de transmettre le rôle RAM créé à l'étape 1 au service Flink pour qu'il l'endosse.

Remarque

Si l'utilisateur RAM de l'étape 3 est déjà associé à la stratégie AliyunRAMFullAccess ou AliyunStreamFullAccess, il dispose déjà de l'autorisation PassRole. Vous pouvez ignorer cette étape.

Créer une stratégie d'autorisation

Connectez-vous à la page Console RAM - Stratégies et cliquez sur Create Policy. Basculez vers le mode Script et modifiez le contenu de la stratégie.

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ram:ListRoles"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "ram:PassRole",
      "Resource": "acs:ram::<account-id>:role/<role-name>",
      "Condition": {
        "StringEquals": {
          "acs:Service": "stream.aliyuncs.com"
        }
      }
    }
  ]
}

Autorisation

Description

ram:ListRoles

Permet à l'utilisateur d'afficher la liste des rôles sous le compte, afin de pouvoir sélectionner le rôle dans la console Flink.

ram:PassRole

Permet à l'utilisateur de transmettre le rôle spécifié au service cloud Flink. Remplacez <account-id> et <role-name> dans la stratégie par les valeurs réelles :

  • <account-id> : L'UID du compte Alibaba Cloud.

  • <role-name> : Le nom du rôle RAM créé à l'étape 1.

Ajoutez une Condition pour restreindre la transmission du rôle uniquement à stream.aliyuncs.com.

Cliquez sur OK pour enregistrer la stratégie, par exemple sous le nom FlinkPassRolePolicy. Pour plus d'informations, consultez Créer une stratégie personnalisée.

Accorder des autorisations à l'utilisateur RAM

  1. Connectez-vous à la page Console RAM - Utilisateurs. Recherchez l'utilisateur RAM à autoriser et cliquez sur Add Permissions dans la colonne Actions.

  2. Dans le panneau Add Permissions, recherchez et sélectionnez la stratégie créée à l'étape 2 (par exemple, FlinkPassRolePolicy), puis cliquez sur Confirm. Pour plus d'informations, consultez Accorder des autorisations à un utilisateur RAM.

Étape 3 : Référencer le rôle RAM dans Flink

Les utilisateurs autorisés à l'étape 2 peuvent transmettre le rôle RAM de l'étape 1 à Flink. Flink endosse le rôle pour obtenir des identifiants temporaires et accéder aux ressources cloud en tant que ce rôle.

Ajouter une référence de rôle RAM

  1. Connectez-vous à la console Realtime Compute et accédez à l'espace de travail cible.

  2. Dans le volet de navigation de gauche, choisissez Security Services > Access Security.

  3. Cliquez sur l'onglet RAM Roles.

  4. Cliquez sur Reference RAM Role.

  5. Dans la boîte de dialogue, configurez les éléments suivants :

    Élément

    Obligatoire

    Description

    Rôle RAM

    Oui

    Sélectionnez le rôle dans la liste déroulante. La recherche floue par nom de rôle et la sélection multiple (jusqu'à 5 par opération) sont prises en charge. Les rôles référencés ne peuvent pas être sélectionnés à nouveau.

    Remarque
    • La liste des rôles contient les rôles de service réguliers sous le compte Alibaba Cloud propriétaire du namespace actuel.

    • L'opérateur doit appartenir au même compte Alibaba Cloud que le namespace actuel et disposer de l'autorisation ListRoles pour afficher les rôles.

    Description

    Non

    Description du rôle. Jusqu'à 256 caractères.

  6. Cliquez sur Test. Le système vérifie automatiquement les deux éléments suivants :

    • Vérification de l'autorisation PassRole : L'utilisateur actuel dispose de l'autorisation ram:PassRole sur le rôle RAM sélectionné.

    • Vérification de la politique de confiance : Le rôle RAM sélectionné fait confiance au namespace Flink actuel pour l'endosser.

  7. Une fois les vérifications réussies, cliquez sur OK.

Utiliser le rôle RAM dans les jobs

Après avoir référencé le rôle RAM, spécifiez le nom du rôle à l'aide du paramètre akless.assume-role.role-name dans le code du job. Flink endosse le rôle pour obtenir le jeton STS temporaire et accède aux ressources cloud en tant que ce rôle.

Remarque

Seuls le connecteur OSS et le connecteur Postgres CDC des moteurs VVR 11.8 et versions ultérieures prennent en charge cette fonctionnalité.

Description des paramètres

Paramètre

Type

Obligatoire

Description

akless.assume-role.role-name

String

Non

Le nom du rôle RAM, par exemple oss-read. Le rôle doit être référencé au préalable sous Access Security > RAM Roles. Sinon, la soumission du job échouera.

Règles de priorité

  • Si une paire AccessKey (accessKeyId + accessKeySecret) est explicitement spécifiée, elle a la priorité la plus élevée.

  • Si aucune paire AccessKey n'est spécifiée mais que akless.assume-role.role-name l'est, le jeton STS du rôle est utilisé.

  • Différents connecteurs dans un job peuvent utiliser différents rôles en spécifiant différentes valeurs pour akless.assume-role.role-name.

Exemple OSS

Ajoutez la configuration suivante dans Other Configuration sous Runtime Parameters dans l'onglet Deployment Details :

# OSS
fs.oss.bucket.<bucketName>.akless.assume-role.role-name: <your-role-name>
fs.oss.inner.bucket: <workspace-associated-bucket-name>

# OSS-HDFS
fs.oss.jindo.akless.assume-role.role-name: <your-role-name>

Paramètre

Description

<bucketName>

Le nom du bucket dans le paramètre de chemin du système de fichiers cible (path).

<workspace-associated-bucket-name>

Vérifiez le champ Storage Type sur la page de liste des espaces de travail pour déterminer si l'espace de travail utilise un bucket OSS géré par l'utilisateur ou un stockage entièrement géré, et obtenez le nom du bucket en conséquence :

  • Bucket OSS : Dans la boîte de dialogue des détails de l'espace de travail, repérez le champ OSS Bucket, qui correspond au nom du bucket OSS associé à l'espace de travail actuel.

  • Entièrement géré : flink-fullymanaged-<workspace-id>, par exemple flink-fullymanaged-db12345678. L'ID de l'espace de travail est disponible dans la boîte de dialogue des détails.

<your-role-name>

Le nom du rôle RAM utilisé pour accéder à OSS.

Gérer les références de rôles RAM

Remarque

La modification ou la suppression d'un rôle RAM dans Flink affecte uniquement la référence Flink au rôle RAM. Cela ne modifie pas directement le rôle RAM lui-même.

Modifier un rôle RAM

  1. Sous Security Services > Access Security > RAM Roles, recherchez le rôle cible et cliquez sur Edit dans la colonne Actions.

  2. Dans la boîte de dialogue, modifiez la description. Le nom du rôle ne peut pas être modifié.

  3. Cliquez sur Test. Une fois les vérifications réussies, cliquez sur OK.

Supprimer un rôle RAM

Important

Après avoir supprimé un rôle RAM, tous les jobs du namespace actuel qui référencent ce rôle échoueront. Procédez avec prudence.

  1. Sous Security Services > Access Security > RAM Roles, recherchez le rôle cible et cliquez sur Remove dans la colonne Actions.

  2. Dans la boîte de dialogue de confirmation, saisissez le nom du rôle et cliquez sur Confirm Removal.

Actualiser le statut du rôle

Cliquez sur Refresh dans le coin supérieur droit de la liste des rôles RAM pour vérifier en masse le statut de tous les rôles référencés.

Statut

Description

Normal

Le rôle existe dans RAM et le jeton STS est valide.

Anormal

Le rôle a été supprimé de RAM, ou la politique de confiance n'autorise plus Flink à l'endosser. Les jobs référençant ce rôle peuvent rencontrer des anomalies.

Annexe : Flux d'appel STS

Alibaba Cloud RAM propose deux modèles d'autorisation principaux liés aux rôles : l'endossement direct (AssumeRole) et l'autorisation déléguée (PassRole).

Modèle 1 : Endossement direct (sts:AssumeRole)

  • Action principale : Une entité de confiance (comme un utilisateur RAM ou une application) appelle activement l'API STS AssumeRole pour obtenir des identifiants temporaires pour un rôle RAM, « devenant » ainsi ce rôle.

  • Chaîne d'autorisation : Entity ACalls sts:AssumeRoleAssumes Role RObtains Role R permissions.

  • Exigence d'autorisation : L'entité A doit disposer de l'autorisation sts:AssumeRole.

  • Scénario typique : Une application s'exécutant sur ECS ou un serveur local doit accéder temporairement à OSS. L'application utilise sa propre paire AccessKey pour appeler AssumeRole, obtient des identifiants temporaires, puis les utilise pour accéder à OSS. Dans ce scénario, l'entité A est l'exécuteur actif.

Modèle 2 : Autorisation déléguée (ram:PassRole)

  • Action principale : Une entité (comme un utilisateur RAM) « transmet » un rôle RAM à un service cloud (comme Flink), autorisant le service à endosser le rôle. L'utilisateur n'endosse pas le rôle.

  • Chaîne d'autorisation : User_B → Transmet Role_A → Au service cloud → Le service cloud appelle sts:AssumeRole pour endosser Role_A → Le service cloud obtient les autorisations de Role_A.

  • Exigence d'autorisation : L'utilisateur B doit disposer de l'autorisation ram:PassRole, et le rôle A doit faire confiance au service cloud pour l'endosser.

  • Scénario typique : Un développeur (User_B) développe un job dans la console Flink et spécifie un rôle (Role_A). Pour permettre au service Flink d'accéder aux ressources cloud au nom de l'utilisateur, celui-ci doit disposer de l'autorisation de transmettre Role_A au service Flink. Dans ce scénario, l'utilisateur est l'autorisateur et le service cloud est l'exécuteur.