As listas de permissões de endereços IP em uma instância RDS se aplicam a todas as contas da instância. Não há um mecanismo nativo para restringir contas individuais a IPs de origem específicos, o que amplia a superfície de ataque. Para resolver isso, vincule uma conta MySQL a um endereço IP específico executando instruções SQL diretamente na instância RDS. A conta vinculada só poderá se conectar a partir desse endereço.
Pré-requisitos
Antes de começar, verifique se você tem:
Uma conta privilegiada na instância RDS. Para mais informações, consulte Crie uma conta em uma instância do ApsaraDB RDS for MySQL
Observações de uso
Gerenciamento pelo console e pela API
Após vincular uma conta a um endereço IP, gerencie essa conta pelo console do ApsaraDB RDS ou por operações de API pode causar problemas. Use o Data Management (DMS) ou instruções SQL para gerencie a conta.
Conflitos de nome de conta
O MySQL identifica cada conta pela combinação de nome de usuário e endereço de host. Se duas contas compartilham o mesmo nome de usuário com padrões de host sobrepostos — por exemplo, user@192.168.% e user@192.168.%.% — a ordem de autenticação não é garantida, o que pode gerar exceções de acesso. Caso as senhas ou permissões das duas contas sejam diferentes, o login pode falhar ou as permissões obtidas após o login podem ser incorretas. Use nomes de usuário distintos para evitar essa ambiguidade.
Vincule uma conta a um endereço IP
Conecte-se à instância RDS. Para mais informações, consulte Use um cliente ou a CLI para se conectar a uma instância do ApsaraDB RDS for MySQL.
-
Execute as seguintes instruções SQL para criar uma conta e vinculá-la a um endereço IP específico.
O exemplo abaixo cria o usuário
test001, concede acesso ao banco de dadosrds001e restringe as conexões ao endereço IP42.120.XX.XX.-- Create the user and bind it to the specified IP address CREATE USER `test001`@`42.120.XX.XX` IDENTIFIED BY 'passwd'; -- Grant global privileges required for replication monitoring GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'test001'@'42.120.XX.XX'; -- Grant full access to the target database GRANT ALL PRIVILEGES ON `rds001`.* TO 'test001'@'42.120.XX.XX'; -- Grant read access to MySQL system tables GRANT SELECT ON mysql.* TO 'test001'@'42.120.XX.XX';O valor de host no nome da conta (
42.120.XX.XX) aceita os seguintes formatos:Formato
Exemplo
Descrição
Endereço IP exato
42.120.1.1Restringe as conexões a um único IP
Padrão com curinga
192.168.%Permite conexões de qualquer IP no intervalo 192.168.x.x
Sem restrição
%Permite conexões de qualquer endereço IP
O console do ApsaraDB RDS exibe os bancos de dados autorizados de uma conta somente quando o host está defina como o curinga
%. Se a conta estiver vinculada a um endereço IP específico, seus bancos de dados autorizados não serão exibidos no console. -
(Opcional) Para alterar o endereço IP vinculado, execute
RENAME USER:RENAME USER `test001`@`42.120.XX.XX` TO `test001`@`42.121.XX.XX`;