Créez des politiques RAM personnalisées pour contrôler quelles ressources OSS vos utilisateurs RAM peuvent consulter et de quelle manière.
Politiques système et prérequis
-
Deux politiques système couvrent les modèles d'accès courants à OSS :
AliyunOSSFullAccess : accorde des autorisations de gestion complètes sur tous les buckets OSS.
AliyunECSReadOnlyAccess : accorde des autorisations en lecture seule sur les buckets OSS.
Les politiques système (telles que AliyunOSSFullAccess et AliyunOSSReadOnlyAccess) sont gérées par Alibaba Cloud et ne peuvent pas être modifiées. Si les autorisations accordées par une politique système ne répondent pas à vos besoins, vous pouvez créer une politique personnalisée pour un contrôle d'accès plus fin. Les politiques personnalisées peuvent être éditées et modifiées.
Avant de rédiger des politiques, examinez les autorisations OSS disponibles. Pour plus d'informations, consultez la rubrique Politique RAM.
Accorder l'accès OSS à un utilisateur RAM
Créez un utilisateur RAM./@cmd Pour plus d'informations, consultez la rubrique Créer un utilisateur RAM.
Créez une politique personnalisée./@cmd Pour plus d'informations, consultez les rubriques Créer une politique personnalisée et Exemples de politiques.
Attachez la politique à l'utilisateur RAM./@cmd Pour plus d'informations, consultez la rubrique Gérer les autorisations des utilisateurs RAM.
Exemples de politiques
-
Exemple 1 : Accorder un accès de gestion complet à un bucket spécifique
Cette politique accorde à un utilisateur RAM toutes les opérations OSS (
oss:*) sur le bucket nommémyphotosainsi que sur tous les objets qu'il contient.{ "Version": "1", "Statement": [ { "Sid": "AllowFullAccessToMyphotos", "Effect": "Allow", "Action": "oss:*", "Resource": [ "acs:oss:*:*:myphotos", "acs:oss:*:*:myphotos/*" ] } ] } -
Exemple 2 : Accorder un accès en lecture seule à un bucket
Cette politique permet à un utilisateur RAM de répertorier les objets et de lire leur contenu dans le bucket
myphotos. Les autorisations requises diffèrent selon que l'utilisateur accède à OSS via le SDK/CLI ou via la console OSS.-
Accès via SDK et CLI
Deux instructions sont nécessaires : l'une pour répertorier les objets du bucket, et l'autre pour lire les objets individuels.
{ "Version": "1", "Statement": [ { "Sid": "AllowListObjectsInMyphotos", "Effect": "Allow", "Action": "oss:ListObjects", "Resource": "acs:oss:*:*:myphotos" }, { "Sid": "AllowGetObjectsInMyphotos", "Effect": "Allow", "Action": "oss:GetObject", "Resource": "acs:oss:*:*:myphotos/*" } ] } -
Accès via la console OSS
La console nécessite des autorisations supplémentaires par rapport à celles requises par le SDK/CLI.
RemarqueLorsqu'un utilisateur RAM se connecte à la console OSS, les opérations
ListBuckets,GetBucketAcletGetObjectAclsont appelées pour vérifier si le bucket est public.La première instruction accorde des opérations de visibilité au niveau de la console sur tous les buckets. Les deuxième et troisième instructions accordent des accès en liste et en lecture limités au bucket
myphotos.{ "Version": "1", "Statement": [ { "Sid": "AllowConsoleVisibility", "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": "acs:oss:*:*:*" }, { "Sid": "AllowListObjectsInMyphotos", "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetBucketAcl" ], "Resource": "acs:oss:*:*:myphotos" }, { "Sid": "AllowGetObjectsInMyphotos", "Effect": "Allow", "Action": [ "oss:GetObject", "oss:GetObjectAcl" ], "Resource": "acs:oss:*:*:myphotos/*" } ] }
-
-
Exemple 3 : Restreindre l'accès à des adresses IP spécifiques
Utilisez l'élément
Conditionpour limiter les adresses IP pouvant accéder au bucketmyphotos. Vous pouvez opter pour une approche par liste d'autorisation (allowlist) ou par liste de blocage (denylist).-
Liste d'autorisation d'adresses IP (Allow avec condition IP)
Cette politique accorde un accès en lecture au bucket
myphotosuniquement lorsque la requête provient du bloc CIDR192.168.0.0/16ou172.16.1.0/16. La condition IP s'applique uniquement à l'instruction d'accès aux données ; l'instructionAllowpour la visibilité de la console reste sans restriction.{ "Version": "1", "Statement": [ { "Sid": "AllowConsoleVisibility", "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": [ "acs:oss:*:*:*" ] }, { "Sid": "AllowReadFromAllowedIPs", "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetObject" ], "Resource": [ "acs:oss:*:*:myphotos", "acs:oss:*:*:myphotos/*" ], "Condition": { "IpAddress": { "acs:SourceIp": ["192.168.0.0/16", "172.16.1.0/16"] } } } ] } -
Liste de blocage d'adresses IP (Deny avec condition IP)
Cette politique refuse explicitement toutes les opérations OSS lorsque la requête provient d'une adresse IP située en dehors du bloc CIDR
192.168.0.0/16. Un utilisateur RAM situé en dehors de cette plage ne peut ni accéder ni gérer le bucketmyphotos.Les deux premières instructions accordent les autorisations
Allownécessaires ; la troisième applique le refus (Deny). Les deux sont requises : l'instruction Allow accorde l'accès, tandis que l'instruction Deny annule cet accès pour les IPs hors plage.{ "Version": "1", "Statement": [ { "Sid": "AllowConsoleVisibility", "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": [ "acs:oss:*:*:*" ] }, { "Sid": "AllowReadFromMyphotos", "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetObject" ], "Resource": [ "acs:oss:*:*:myphotos", "acs:oss:*:*:myphotos/*" ] }, { "Sid": "DenyAccessFromOutsideAllowedIP", "Effect": "Deny", "Action": "oss:*", "Resource": [ "acs:oss:*:*:*" ], "Condition": { "NotIpAddress": { "acs:SourceIp": ["192.168.0.0/16"] } } } ] }RemarqueUne instruction Deny est prioritaire sur une instruction Allow. Lorsqu'un utilisateur RAM tente de lire des données depuis le bucket
myphotoset que son adresse IP ne figure pas dans le bloc CIDR192.168.0.0/16, OSS renvoie une erreur d'autorisation refusée.
-
-
Exemple 4 : Accorder un accès en lecture seule à un dossier spécifique
L'autorisation au niveau des dossiers constitue une utilisation avancée des politiques RAM. Les autorisations requises dépendent de la manière dont l'utilisateur RAM accède à OSS.
Le bucket suivant stocke des photos organisées par emplacement et par année :
Le bucket
myphotoscontient des dossiers nommés par emplacement, chacun comprenant des sous-dossiers nommés par année.myphotos[Bucket] ├── beijing │ ├── 2014 │ └── 2015 ├── hangzhou │ ├── 2013 │ ├── 2014 │ └── 2015 // Grant read-only permissions on this folder to a RAM user. └── qingdao ├── 2014 └── 2015L'objectif est d'accorder un accès en lecture seule au dossier
myphotos/hangzhou/2015/. Choisissez le scénario qui correspond à votre cas d'utilisation :-
Scénario 1 : Accès direct aux objets sans listage des dossiers
L'utilisateur RAM lit les objets en utilisant leur chemin complet, mais ne peut pas lister le contenu des dossiers. Attachez cette politique aux services applicatifs qui récupèrent des objets via des chemins connus.
Dans ce scénario, l'utilisateur RAM peut utiliser le chemin complet pour lire les données des objets.
{ "Version": "1", "Statement": [ { "Sid": "AllowGetObjectsInHangzhou2015", "Effect": "Allow", "Action": [ "oss:GetObject" ], "Resource": [ "acs:oss:*:*:myphotos/hangzhou/2015/*" ] } ] } -
Scénario 2 : Accès aux dossiers via OSS CLI
L'utilisateur RAM peut lister et lire les objets dans le dossier
myphotos/hangzhou/2015/en utilisant OSS CLI ou en appelant directement les opérations OSS. Utilisez cette politique pour accorder l'accès aux développeurs logiciels.Dans ce scénario, l'utilisateur RAM peut utiliser OSS CLI ou appeler des opérations pour lire les données du dossier.
L'autorisation
ListObjectsest requise pour énumérer les objets du dossier. La conditionPrefixlimite le listage au seul dossier cible.{ "Version": "1", "Statement": [ { "Sid": "AllowGetObjectsInHangzhou2015", "Effect": "Allow", "Action": [ "oss:GetObject" ], "Resource": [ "acs:oss:*:*:myphotos/hangzhou/2015/*" ] }, { "Sid": "AllowListObjectsInHangzhou2015", "Effect": "Allow", "Action": [ "oss:ListObjects" ], "Resource": [ "acs:oss:*:*:myphotos" ], "Condition": { "StringLike": { "oss:Prefix": "hangzhou/2015/*" } } } ] } -
Scénario 3 : Accès aux dossiers via la console OSS
L'utilisateur RAM navigue vers le dossier
myphotos/hangzhou/2015/en utilisant la console OSS ou un client visuel tel que l'Explorateur de fichiers Windows.Dans ce scénario, l'utilisateur RAM peut utiliser un client OSS visuel (par exemple, l'Explorateur de fichiers Windows) pour accéder au dossier
myphotos/hangzhou/2015/.Trois ensembles d'autorisations sont requis pour que la navigation dans la console fonctionne correctement :
Autorisation de lister tous les
bucketsAutorisation de lister les dossiers sous
myphotosAutorisation de lister les dossiers sous
myphotos/hangzhou
La première instruction accorde la visibilité de la console sur tous les buckets. La seconde accorde un accès en lecture au dossier cible. La troisième utilise les conditions
DelimiteretPrefixpour permettre une navigation dossier par dossier jusqu'àhangzhou/2015/.{ "Version": "1", "Statement": [ { "Sid": "AllowConsoleVisibility", "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": [ "acs:oss:*:*:*" ] }, { "Sid": "AllowGetObjectsInHangzhou2015", "Effect": "Allow", "Action": [ "oss:GetObject", "oss:GetObjectAcl" ], "Resource": [ "acs:oss:*:*:myphotos/hangzhou/2015/*" ] }, { "Sid": "AllowFolderNavigationInMyphotos", "Effect": "Allow", "Action": [ "oss:ListObjects" ], "Resource": [ "acs:oss:*:*:myphotos" ], "Condition": { "StringLike": { "oss:Delimiter": "/", "oss:Prefix": [ "", "hangzhou/", "hangzhou/2015/*" ] } } } ] }
-