Tablestore utilise des politiques d'autorisation au format JSON pour un contrôle d'accès aux ressources granulaire. Chaque politique définit les éléments Action, Resource et Condition, et s'applique aux politiques d'instance, aux politiques RAM et aux politiques de contrôle.
Syntaxe d'autorisation
Une politique d'autorisation utilise le format JSON et se compose d'un numéro de version (Version) ainsi que d'une ou plusieurs instructions d'autorisation (Statement). Chaque instruction contient les éléments Effect, Action, Resource et Condition.
Structure de la syntaxe
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": ["ots:ActionName"],
"Resource": ["acs:ots:region:account-id:instance-and-resource-path"],
"Condition": {
"ConditionOperator": {
"ConditionKey": ["ConditionValue"]
}
}
}
]
}
description des champs
|
Champ |
description |
Obligatoire |
|
Version |
Numéro de version de la politique d'autorisation. La valeur est fixée à |
Oui |
|
Statement |
Corps de l'autorisation. Vous pouvez configurer une ou plusieurs instructions. |
Oui |
|
Effect |
Effet de l'autorisation. Valeurs valides : |
Oui |
|
Action |
Opérations à autoriser ou à refuser. Pour plus d'informations, consultez la section Action. |
Oui |
|
Resource |
Ressources à autoriser. Pour plus d'informations, consultez la section Resource. |
Oui |
|
Condition |
Conditions dans lesquelles l'autorisation prend effet. Pour plus d'informations, consultez la section Condition. |
Non |
Action
L'élément Action spécifie les opérations à autoriser ou à refuser sur une ressource. Chaque action doit être préfixée par ots:, et plusieurs actions sont séparées par des virgules (,). Le caractère générique astérisque (*) prend en charge la correspondance de préfixe et de suffixe. Définitions d'action courantes :
Une seule opération API
"Action": "ots:GetRow"
Plusieurs opérations API
"Action": [
"ots:PutRow",
"ots:GetRow"
]
Toutes les opérations API en lecture seule
"Action": [
"ots:BatchGet*",
"ots:Describe*",
"ots:Get*",
"ots:List*",
"ots:Consume*",
"ots:Search",
"ots:ComputeSplitPointsBySize"
]
Toutes les opérations API en lecture et écriture
"Action": "ots:*"
Toutes les opérations API SQL
"Action": "ots:SQL*"
Resource
L'élément Resource spécifie l'étendue des ressources accessibles et se compose de champs tels que le produit, la région, l'ID de compte, le nom de l'instance et le nom de la table. Chaque champ prend en charge le caractère générique astérisque (*) pour la correspondance de préfixe et de suffixe. Le format est le suivant :
acs:ots:[region]:[user_id]:instance/[instance_name]/table/[table_name]
Le produit est fixé à ots. [region] correspond à l'ID de la région où réside la ressource, par exemple cn-hangzhou. [user_id] représente l'ID du compte Alibaba Cloud. [instance_name] et [table_name] correspondent respectivement aux noms de l'instance et de la table. Remplacez ces espaces réservés par vos valeurs réelles.
Pour les opérations Tunnel, l'élément Resource ne peut être spécifié qu'au niveau de l'instance. Le format est le suivant :
acs:ots:[region]:[user_id]:instance/[instance_name]
notes
Les noms d'instance dans Tablestore ne sont pas sensibles à la casse. Spécifiez
[instance_name]en minuscules dans une définition Resource.Les éléments Action et Resource sont vérifiés par correspondance de chaînes, et le caractère générique astérisque (
*) distingue la correspondance de préfixe de celle de suffixe. Par exemple, une définition Resource telle queacs:ots:*:*:instance/abcne correspond pas àacs:ots:*:*:instance/abc/table/xyz.Pour gérer les ressources d'instance dans la console Tablestore, celle-ci doit obtenir la liste des instances. Par conséquent, accordez à l'utilisateur des permissions de lecture sur la ressource
acs:ots:[region]:[user_id]:instance/*.Pour les opérations API par lot (telles que BatchGetRow et BatchWriteRow), Tablestore autorise chaque table accédée séparément. L'opération s'exécute uniquement si toutes les tables passent l'autorisation. Dans le cas contraire, une erreur de permission est renvoyée.
Définitions Resource typiques
-
Toutes les ressources de tous les comptes dans toutes les régions.
"Resource": "acs:ots:*:*:*" -
Toutes les instances et leurs tables du compte 123456 dans la région Chine (Hangzhou).
"Resource": "acs:ots:cn-hangzhou:123456:instance*" -
L'instance nommée abc et toutes ses tables du compte 123456 dans la région Chine (Hangzhou).
"Resource": [ "acs:ots:cn-hangzhou:123456:instance/abc", "acs:ots:cn-hangzhou:123456:instance/abc/table*" ] -
Toutes les instances dont le nom commence par abc et toutes leurs tables.
"Resource": "acs:ots:*:*:instance/abc*" -
Toutes les tables dont le nom commence par xyz dans toutes les instances dont le nom commence par abc (à l'exclusion de la ressource d'instance, qui ne correspond pas à
acs:ots:*:*:instance/abc*)."Resource": "acs:ots:*:*:instance/abc*/table/xyz*"
Types d'API et ressources
Les opérations de l'API Tablestore se répartissent en deux catégories : les opérations de gestion des instances et les opérations de lecture/écriture des tables et des données. La configuration des ressources pour chaque type est la suivante :
Ressources accessibles via les opérations de l'API de gestion
Les opérations de l'API de gestion traitent les tâches au niveau de l'instance et sont appelées à la fois par la console et par OpenAPI. Les ressources ci-dessous omettent le préfixe acs:ots:[region]:[user_id]: et n'affichent que la partie relative à l'instance.
|
Opération d'API |
Action |
Ressource accessible |
|
CreateInstance |
|
instance/[instance_name] |
|
UpdateInstance |
|
instance/[instance_name] |
|
GetInstance |
|
instance/[instance_name] |
|
DeleteInstance |
|
instance/[instance_name] |
|
ListInstances |
|
instance/* |
|
ChangeResourceGroup |
|
instance/[instance_name] |
|
ListTagResources |
|
instance/* |
|
TagResources |
|
instance/[instance_name] |
|
UntagResources |
|
instance/[instance_name] |
|
UpdateInstancePolicy |
|
instance/[instance_name] |
|
DeleteInstancePolicy |
|
instance/[instance_name] |
|
CheckInstancePolicy |
|
instance/[instance_name] |
|
UpdateInstanceElasticVCUUpperLimit |
|
instance/[instance_name] |
Ressources accessibles via les opérations de l'API de données
Les opérations de l'API de données gèrent les tâches au niveau des tables et des lignes, et sont appelées à la fois par la console et par les SDK. Les définitions des actions et des ressources influencent l'expérience utilisateur dans la console. Les ressources ci-dessous omettent le préfixe acs:ots:[region]:[user_id]: et n'affichent que les parties relatives à l'instance et à la table.
|
Opération d'API |
Action |
Ressource accessible |
|
ListTable |
|
instance/[instance_name]/table* |
|
CreateTable |
|
instance/[instance_name]/table/[table_name] |
|
UpdateTable |
|
instance/[instance_name]/table/[table_name] |
|
DescribeTable |
|
instance/[instance_name]/table/[table_name] |
|
DeleteTable |
|
instance/[instance_name]/table/[table_name] |
|
CreateGlobalTable |
|
instance/[instance_name]/table/[table_name] |
|
DescribeGlobalTable |
|
instance/[instance_name]/table/[table_name] |
|
UpdateGlobalTable |
|
instance/[instance_name]/table/[table_name] |
|
BindGlobalTable |
|
instance/[instance_name]/table/[table_name] |
|
UnbindGlobalTable |
|
instance/[instance_name]/table/[table_name] |
|
AddDefinedColumn |
|
instance/[instance_name]/table/[table_name] |
|
DeleteDefinedColumn |
|
instance/[instance_name]/table/[table_name] |
|
GetRow |
|
instance/[instance_name]/table/[table_name] |
|
PutRow |
|
instance/[instance_name]/table/[table_name] |
|
UpdateRow |
|
instance/[instance_name]/table/[table_name] |
|
DeleteRow |
|
instance/[instance_name]/table/[table_name] |
|
GetRange |
|
instance/[instance_name]/table/[table_name] |
|
BatchGetRow |
|
instance/[instance_name]/table/[table_name] |
|
BatchWriteRow |
|
instance/[instance_name]/table/[table_name] |
|
ComputeSplitPointsBySize |
|
instance/[instance_name]/table/[table_name] |
|
StartLocalTransaction |
|
instance/[instance_name]/table/[table_name] |
|
CommitTransaction |
|
instance/[instance_name]/table/[table_name] |
|
AbortTransaction |
|
instance/[instance_name]/table/[table_name] |
|
CreateIndex |
|
instance/[instance_name]/table/[table_name] |
|
DropIndex |
|
instance/[instance_name]/table/[table_name] |
|
CreateSearchIndex |
|
instance/[instance_name]/table/[table_name] |
|
UpdateSearchIndex |
|
instance/[instance_name]/table/[table_name] |
|
DeleteSearchIndex |
|
instance/[instance_name]/table/[table_name] |
|
ListSearchIndex |
|
instance/[instance_name]/table/[table_name] |
|
DescribeSearchIndex |
|
instance/[instance_name]/table/[table_name] |
|
Search |
|
instance/[instance_name]/table/[table_name] |
|
ComputeSplits |
|
instance/[instance_name]/table/[table_name] |
|
ParallelScan |
|
instance/[instance_name]/table/[table_name] |
|
CreateTunnel |
|
instance/[instance_name]/table/[table_name] |
|
DeleteTunnel |
|
instance/[instance_name]/table/[table_name] |
|
ListTunnel |
|
instance/[instance_name]/table/[table_name] |
|
ConsumeTunnel |
|
instance/[instance_name]/table/[table_name] |
|
DescribeTunnel |
|
instance/[instance_name]/table/[table_name] |
|
BulkImport |
|
instance/[instance_name]/table/[table_name] |
|
BulkExport |
|
instance/[instance_name]/table/[table_name] |
|
SQL_Select |
|
instance/[instance_name]/table/[table_name] |
|
SQL_Create |
|
instance/[instance_name]/table/[table_name] |
|
SQL_DropMapping |
|
instance/[instance_name]/table/[table_name] |
Condition
Une condition définit les contraintes d'application d'une autorisation. Elle se compose d'un opérateur de condition, d'une clé de condition et d'une valeur de condition.
Opérateurs de condition
Un opérateur de condition définit la manière dont une clé de condition est comparée à une valeur de condition. Les types pris en charge incluent String, Number, Date and time, Boolean et IP address. Pour la liste complète, consultez Opérateurs de condition.
Clés de condition
Le tableau suivant répertorie les clés de condition personnalisées et communes prises en charge par Tablestore.
|
Type |
Clé de condition |
Description |
|
Conditions personnalisées Tablestore |
|
S'applique aux opérations CreateTable et UpdateTable. Spécifie si seule la création ou la mise à jour de tables chiffrées est autorisée. Le type de valeur est String. Valeurs valides : true et false. Exemple de configuration : |
|
|
Spécifie si seul l'accès depuis un proxy de confiance est autorisé. L'accès depuis la console utilise un proxy de confiance. Le type de valeur est String. Valeurs valides : true et false. Exemple de configuration : |
|
|
|
S'applique aux opérations CreateInstance et UpdateInstance. Spécifie si seule la création d'instances non accessibles via Internet est autorisée. Le type de valeur est String. Valeurs valides : true et false. Exemple de configuration : |
|
|
|
Définit les versions TLS clientes autorisées. Cela restreint également l'accès au protocole HTTPS uniquement. Le type de valeur est String. Valeurs valides : TLSv1, TLSv1.1, TLSv1.2 et TLSv1.3. Une seule condition prend en charge plusieurs versions TLS. Lorsque plusieurs versions TLS sont configurées, un client peut accéder à Tablestore avec succès en utilisant l'une des versions configurées. |
|
|
|
Restreint l'ID AccessKey (AK) de la source de la requête. Le type de valeur est String. Pour spécifier plusieurs ID AccessKey, saisissez un ID AccessKey par ligne. |
|
|
Conditions communes |
|
Restreint l'adresse IP source ou le bloc CIDR de l'accès. Le type de valeur est String. Valeurs valides : adresses IP IPv4 ou IPv6 et blocs CIDR. Une seule condition prend en charge plusieurs adresses IP ou blocs CIDR. Important
Dans une politique d'instance, si vous configurez |
|
|
Restreint le VPC source de l'accès. Le type de valeur est String. Valeurs valides : l'ID du VPC source et |
|
|
|
Restreint le protocole de requête, en particulier si l'accès utilise un transport sécurisé (HTTPS). Le type de valeur est Bool. Valeurs valides :
Si |
|
|
|
Restreint l'heure d'arrivée d'une requête sur le serveur Tablestore. Le type de valeur est Date and time, au format ISO 8601, par exemple |
|
|
|
Restreint l'utilisation de l'authentification multifacteur (MFA) pour l'accès. Le type de valeur est Bool. Valeurs valides : true et false. |