O Tablestore utiliza políticas de autorização em formato JSON para controle de acesso granular aos recursos. Uma política de autorização define os elementos Action, Resource e Condition, aplicando-se a políticas de instância, políticas do RAM e políticas de controle.
Sintaxe de autorização
Uma política de autorização é descrita em JSON e composta por um número de versão (Version) e uma ou mais instruções de autorização (Statement). Cada instrução contém os elementos básicos Effect, Action, Resource e Condition.
Estrutura da sintaxe
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": ["ots:ActionName"],
"Resource": ["acs:ots:region:account-id:instance-and-resource-path"],
"Condition": {
"ConditionOperator": {
"ConditionKey": ["ConditionValue"]
}
}
}
]
}
Descrição dos campos
|
Campo |
Descrição |
Obrigatório |
|
Version |
Número da versão da política de autorização. O valor é fixo em |
Sim |
|
Statement |
Corpo da autorização. Configure uma ou mais instruções. |
Sim |
|
Effect |
Efeito da autorização. Valores válidos: |
Sim |
|
Action |
Operações a permitir ou negar. Para obter mais informações, consulte Action. |
Sim |
|
Resource |
Recursos a autorizar. Para obter mais informações, consulte Resource. |
Sim |
|
Condition |
Condições para a autorização entrar em vigor. Para obter mais informações, consulte Condition. |
Não |
Action
O elemento Action especifica uma operação realizada em um recurso. Cada ação deve ter o prefixo ots:, e múltiplas ações são separadas por vírgulas (,). As ações aceitam o caractere curinga asterisco (*) para correspondência tanto de prefixo quanto de sufixo. Definições comuns de ação:
Uma única operação de API
"Action": "ots:GetRow"
Múltiplas operações de API
"Action": [
"ots:PutRow",
"ots:GetRow"
]
Todas as operações de API somente leitura
"Action": [
"ots:BatchGet*",
"ots:Describe*",
"ots:Get*",
"ots:List*",
"ots:Consume*",
"ots:Search",
"ots:ComputeSplitPointsBySize"
]
Todas as operações de API de leitura e gravação
"Action": "ots:*"
Todas as operações de API SQL
"Action": "ots:SQL*"
Resource
Um recurso consiste em campos como produto, região, ID da conta, nome da instância e nome da tabela. O elemento Resource especifica o escopo dos recursos acessíveis. Cada campo aceita o caractere curinga asterisco (*) para correspondência tanto de prefixo quanto de sufixo. O formato do Resource é o seguinte:
acs:ots:[region]:[user_id]:instance/[instance_name]/table/[table_name]
O produto é fixo como ots. [region] é o ID da região onde o recurso reside (por exemplo, cn-hangzhou). [user_id] é o ID da conta Alibaba Cloud. [instance_name] é o nome da instância. [table_name] é o nome da tabela. Substitua esses valores pelos valores reais dos seus recursos.
Para o Tunnel, a definição de Resource pode ser especificada apenas no nível da instância, consistindo no produto, região, ID da conta e nome da instância. O formato do Resource é o seguinte:
acs:ots:[region]:[user_id]:instance/[instance_name]
Notas de uso
Os nomes de instância no Tablestore não diferenciam maiúsculas de minúsculas. Especifique
[instance_name]em letras minúsculas na definição de Resource.A verificação de Action e Resource ocorre por correspondência de strings, e o caractere curinga asterisco (
*) distingue entre correspondência de prefixo e sufixo. Por exemplo, uma definição de Resource comoacs:ots:*:*:instance/abcnão corresponde aacs:ots:*:*:instance/abc/table/xyz.Para gerenciar recursos de instância no console do Tablestore, o console precisa obter a lista de instâncias. Portanto, conceda ao usuário permissões de leitura no recurso
acs:ots:[region]:[user_id]:instance/*.Nas operações de API em lote (como BatchGetRow e BatchWriteRow), o Tablestore autoriza cada tabela acessada separadamente. A operação executa apenas se todas as tabelas passarem na autorização. Caso contrário, o sistema retorna um erro de permissão.
Definições típicas de Resource
-
Todos os recursos de todas as contas em todas as regiões.
"Resource": "acs:ots:*:*:*" -
Todas as instâncias e suas tabelas na conta 123456 na região China (Hangzhou).
"Resource": "acs:ots:cn-hangzhou:123456:instance*" -
A instância chamada abc e todas as suas tabelas na conta 123456 na região China (Hangzhou).
"Resource": [ "acs:ots:cn-hangzhou:123456:instance/abc", "acs:ots:cn-hangzhou:123456:instance/abc/table*" ] -
Todas as instâncias cujos nomes começam com abc e todas as suas tabelas.
"Resource": "acs:ots:*:*:instance/abc*" -
Todas as tabelas cujos nomes começam com xyz em todas as instâncias cujos nomes começam com abc (excluindo o recurso de instância, que não corresponde a
acs:ots:*:*:instance/abc*)."Resource": "acs:ots:*:*:instance/abc*/table/xyz*"
Tipos de API e recursos
As operações de API do Tablestore dividem-se em duas categorias: operações de gerenciamento de instâncias e operações de leitura/gravação de tabelas e dados. A configuração de recurso para cada tipo é a seguinte:
Recursos acessados por operações de API de gerenciamento
As operações de API de gerenciamento referem-se principalmente a operações relacionadas a instâncias, chamadas tanto pelo console quanto pela OpenAPI. Os recursos acessados abaixo omitem o prefixo acs:ots:[region]:[user_id]: e descrevem apenas a parte da instância.
|
Operação de API |
Action |
Recurso acessado |
|
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] |
Recursos acessados por operações de API de dados
As operações de API de dados referem-se principalmente a operações relacionadas a tabelas e linhas, chamadas tanto pelo console quanto pelos SDKs. As definições de Action e Resource dessas operações de API afetam a experiência do usuário no console. Os recursos acessados abaixo omitem o prefixo acs:ots:[region]:[user_id]: e descrevem apenas as partes da instância e da tabela.
|
Operação de API |
Action |
Recurso acessado |
|
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
O elemento Condition especifica as restrições para a autorização entrar em vigor. Ele consiste em um operador de condição, uma chave de condição e um valor de condição.
Operadores de condição
Um operador de condição define como uma chave de condição é comparada com um valor de condição. Os tipos suportados incluem string (String), número (Number), data e hora (Date and time), booleano (Boolean) e endereço IP (IP address). Para obter a lista completa de operadores de condição e suas descrições, consulte Operadores condicionais.
Chaves de condição
A tabela a seguir descreve as chaves de condição personalizadas e as chaves de condição comuns suportadas pelo Tablestore.
|
Tipo |
Chave de condição |
Descrição |
|
Condições personalizadas do Tablestore |
|
Aplica-se às operações CreateTable e UpdateTable. Define se o sistema permite apenas a criação ou atualização de tabelas criptografadas. O tipo de valor é String. Valores válidos: true e false. Exemplo de configuração: |
|
|
Define se o sistema permite apenas acesso proveniente de um proxy confiável. O acesso via console utiliza um proxy confiável. O tipo de valor é String. Valores válidos: true e false. Exemplo de configuração: |
|
|
|
Aplica-se às operações CreateInstance e UpdateInstance. Define se o sistema permite apenas a criação de instâncias sem acesso pela Internet. O tipo de valor é String. Valores válidos: true e false. Exemplo de configuração: |
|
|
|
Define as versões de TLS permitidas para o cliente. Isso também restringe o acesso exclusivamente ao protocolo HTTPS. O tipo de valor é String. Valores válidos: TLSv1, TLSv1.1, TLSv1.2 e TLSv1.3. Uma única condição suporta múltiplas versões de TLS. Quando várias versões são configuradas, um cliente consegue acessar o Tablestore com êxito usando qualquer uma das versões TLS definidas. |
|
|
|
Restringe o AccessKey ID (AK) da origem da solicitação. O tipo de valor é String. Para especificar vários AccessKey IDs, insira um AccessKey ID por linha. |
|
|
Condições comuns |
|
Restringe o endereço IP de origem ou o bloco CIDR do acesso. O tipo de valor é String. Valores válidos: endereços IP IPv4 ou IPv6 e blocos CIDR. Uma única condição suporta múltiplos endereços IP ou blocos CIDR. Importante
Em uma política de instância, se você configurar |
|
|
Restringe a VPC de origem do acesso. O tipo de valor é String. Valores válidos: o ID da VPC de origem e |
|
|
|
Restringe o protocolo da solicitação, ou seja, se o acesso utiliza transporte seguro (HTTPS). O tipo de valor é Bool. Valores válidos:
Se |
|
|
|
Restringe o horário em que uma solicitação chega ao servidor do Tablestore. O tipo de valor é Data e hora, no formato ISO 8601, por exemplo, |
|
|
|
Restringe se o acesso utiliza autenticação multifator (MFA). O tipo de valor é Bool. Valores válidos: true e false. |