Configure uma política de instância para proteger uma instância do Tablestore restringindo o acesso com base em condições como endereço IP de source, rede de source e versão do TLS.
Como funciona
Uma política de instância é uma política de autorização baseada em recursos anexada a uma instância. Ela define quais principais podem executar quais ações em quais recursos e sob quais condições. Para obter informações sobre a sintaxe e os elementos da política, consulte Authorization policy syntax and elements.
Quando o Tablestore avalia as políticas anexadas, a negação explícita tem precedência: qualquer regra Deny correspondente bloqueia a solicitação, independentemente das regras Allow.
Métodos de configuração
Console
Faça logon no console do Tablestore e alterne a região na parte superior da página.
Clique em no nome da instância de destino ou em Instance Management e clique em na aba Security Policy.
-
Clique em Authorize. Na aba Visualized Policy, defina Effect como Allow ou Deny e configure a Condition da política.
NotaPara visualizar a política como um script JSON, mude para a aba Script-based Policy.
Parâmetro
Descrição
Condition Key
A chave de condição. Valores válidos:
-
acs:SourceVpc: Restringe o acesso do cliente pela VPC de source. -
ots:TLSVersion: Restringe o acesso do cliente pela versão do TLS usada pela source. -
acs:SourceIp: Restringe o acesso do cliente pelo endereço IP de source. -
ots:AccessId: Restringe o acesso do cliente pelo AccessKey ID (AK) do usuário solicitante. -
acs:SecureTransport: Restringe o acesso do cliente conforme o uso de HTTPS na solicitação.
ImportanteA chave de condição
acs:SourceIpcorresponde apenas ao endereço IP de source da solicitação, sem distinguir entre tráfego público e interno da VPC. Se você usar apenasacs:SourceIppara restringir o acesso, solicitações de outras VPCs que usem o mesmo intervalo de IP também serão permitidas, o que cria um risco de acesso não autorizado. Sempre combineacs:SourceIpcomacs:SourceVpcpara tornar explícita a source da rede.Operator
O operador aplicado à chave de condição. Para mais informações, consulte Condition operators.
Condition Value
O valor para a Condition Key selecionada.
-
acs:SourceVpc: Insira um ID de VPC válido. Para permitir apenas acesso pela internet, insiravpc-*com o operadorStringNotLike.Para inserir vários valores, coloque um ID de VPC por linha.
-
ots:TLSVersion: Selecione uma versão do TLS. Os valores válidos são TLSv1, TLSv1.1, TLSv1.2 e TLSv1.3. -
acs:SourceIp: Insira um endereço IP ou um bloco CIDR.Para inserir vários valores, coloque um endereço IP ou bloco CIDR por linha.
-
ots:AccessId: Insira o AccessKey ID (AK) do usuário.Para inserir vários valores, coloque um AccessKey ID por linha.
-
acs:SecureTransport: Defina o valor comotruepara permitir apenas acesso HTTPS oufalsepara permitir apenas acesso HTTP.
-
Clique em Yes.
Após anexar a política, visualize-a completa na aba Script-based Policy.
API
Use as operações UpdateInstancePolicy e DeleteInstancePolicy para gerencie a política de instância.
Cenários comuns e exemplos de políticas
Os exemplos a seguir mostram combinações de condições e políticas JSON para cenários típicos de controle de acesso.
Permitir acesso apenas de endereços IP públicos específicos
Restrinja o acesso a endereços IP públicos específicos combinando acs:SourceIp com acs:SourceVpc para garantir que a source da rede seja inequívoca. Para corresponder ao tráfego da internet pública, defina acs:SourceVpc como vpc-* com o operador StringNotLike.
Defina Effect como Allow e adicione as duas condições a seguir:
|
Condition Key |
Operator |
Condition Value |
|
|
|
O endereço IP público ou bloco CIDR com permissão para acessar a instância. |
|
|
|
|
A instrução Allow permite solicitações do endereço IP público 203.0.113.5. A primeira instrução Deny bloqueia todos os outros endereços IP públicos, e a segunda bloqueia todas as solicitações de VPCs. Consequentemente, apenas solicitações do endereço IP público especificado podem acessar a instância myinstance.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": ["ots:*"],
"Resource": ["acs:ots:*:13791xxxxxxxxxxx:instance/myinstance*"],
"Principal": ["*"],
"Condition": {
"IpAddress": {
"acs:SourceIp": ["203.0.113.5"]
},
"StringNotLike": {
"acs:SourceVpc": ["vpc-*"]
}
}
},
{
"Effect": "Deny",
"Action": ["ots:*"],
"Resource": ["acs:ots:*:13791xxxxxxxxxxx:instance/myinstance*"],
"Principal": ["*"],
"Condition": {
"NotIpAddress": {
"acs:SourceIp": ["203.0.113.5"]
},
"StringNotLike": {
"acs:SourceVpc": ["vpc-*"]
}
}
},
{
"Effect": "Deny",
"Action": ["ots:*"],
"Resource": ["acs:ots:*:13791xxxxxxxxxxx:instance/myinstance*"],
"Principal": ["*"],
"Condition": {
"StringLike": {
"acs:SourceVpc": ["vpc-*"]
}
}
}
]
}
Permitir acesso apenas de uma VPC específica
Utilize esta configuração para limitar a instância ao tráfego originado de uma única VPC nomeada.
Defina Effect como Allow e adicione a seguinte condição:
|
Condition Key |
Operator |
Condition Value |
|
|
|
O ID da VPC com permissão para acessar a instância. |
A instrução Allow permite solicitações da VPC vpc-bp1xxxxxxxxxxxxxxxx. A instrução Deny bloqueia solicitações de outras VPCs e da internet pública. Dessa forma, apenas solicitações da VPC especificada podem acessar a instância myinstance.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": ["ots:*"],
"Resource": ["acs:ots:*:13791xxxxxxxxxxx:instance/myinstance*"],
"Principal": ["*"],
"Condition": {
"StringEquals": {
"acs:SourceVpc": ["vpc-bp1xxxxxxxxxxxxxxxx"]
}
}
},
{
"Effect": "Deny",
"Action": ["ots:*"],
"Resource": ["acs:ots:*:13791xxxxxxxxxxx:instance/myinstance*"],
"Principal": ["*"],
"Condition": {
"StringNotEquals": {
"acs:SourceVpc": ["vpc-bp1xxxxxxxxxxxxxxxx"]
}
}
}
]
}
Permitir acesso apenas de um intervalo de IP específico em uma VPC específica
Combine condições de VPC e intervalo de IP para permitir que apenas o bloco CIDR escolhido dentro da VPC selecionada alcance a instância.
Defina Effect como Allow e adicione as duas condições a seguir:
|
Condition Key |
Operator |
Condition Value |
|
|
|
O bloco CIDR com permissão para acessar a instância. |
|
|
|
O ID da VPC, que restringe a source da solicitação a essa VPC. |
A instrução Allow permite solicitações do bloco CIDR 192.168.0.0/16 na VPC vpc-bp1xxxxxxxxxxxxxxxx. A primeira instrução Deny bloqueia solicitações de outras VPCs e da internet pública. A segunda bloqueia solicitações externas ao bloco CIDR especificado dentro da VPC indicada. Assim, apenas solicitações do bloco CIDR especificado na VPC definida podem acessar a instância myinstance.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": ["ots:*"],
"Resource": ["acs:ots:*:13791xxxxxxxxxxx:instance/myinstance*"],
"Principal": ["*"],
"Condition": {
"IpAddress": {
"acs:SourceIp": ["192.168.0.0/16"]
},
"StringEquals": {
"acs:SourceVpc": ["vpc-bp1xxxxxxxxxxxxxxxx"]
}
}
},
{
"Effect": "Deny",
"Action": ["ots:*"],
"Resource": ["acs:ots:*:13791xxxxxxxxxxx:instance/myinstance*"],
"Principal": ["*"],
"Condition": {
"StringNotEquals": {
"acs:SourceVpc": ["vpc-bp1xxxxxxxxxxxxxxxx"]
}
}
},
{
"Effect": "Deny",
"Action": ["ots:*"],
"Resource": ["acs:ots:*:13791xxxxxxxxxxx:instance/myinstance*"],
"Principal": ["*"],
"Condition": {
"StringEquals": {
"acs:SourceVpc": ["vpc-bp1xxxxxxxxxxxxxxxx"]
},
"NotIpAddress": {
"acs:SourceIp": ["192.168.0.0/16"]
}
}
}
]
}
Restringir a versão do TLS para acesso à instância
Exija que os clientes negociem uma das versões de TLS listadas antes de acessarem a instância.
Defina Effect como Allow e adicione a seguinte condição:
|
Condition Key |
Operator |
Condition Value |
|
|
|
|
A instrução Allow permite solicitações que usam TLSv1.2 ou TLSv1.3. A instrução Deny bloqueia todas as outras versões do TLS. Portanto, apenas solicitações que usam TLSv1.2 ou TLSv1.3 podem acessar a instância myinstance.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": ["ots:*"],
"Resource": ["acs:ots:*:13791xxxxxxxxxxx:instance/myinstance*"],
"Principal": ["*"],
"Condition": {
"StringEquals": {
"ots:TLSVersion": ["TLSv1.2", "TLSv1.3"]
}
}
},
{
"Effect": "Deny",
"Action": ["ots:*"],
"Resource": ["acs:ots:*:13791xxxxxxxxxxx:instance/myinstance*"],
"Principal": ["*"],
"Condition": {
"StringNotEquals": {
"ots:TLSVersion": ["TLSv1.2", "TLSv1.3"]
}
}
}
]
}
Limitações
O tamanho total de todas as entradas de condição adicionadas a uma única instância não pode exceder 4 KB.