Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Column-Level segurança permite que os clientes controlem o acesso às colunas da tabela com base no contexto de execução do usuário ou na associação ao grupo.
A segurança em nível de coluna simplifica o design e a codificação da segurança em seu aplicativo, permitindo que você restrinja o acesso à coluna para proteger dados confidenciais. Por exemplo, garantir que usuários específicos possam acessar apenas determinadas colunas de uma tabela pertinente ao seu departamento. A lógica de restrição de acesso está localizada na camada de banco de dados em vez de longe dos dados em outra camada de aplicativo. O banco de dados aplica as restrições de acesso sempre que o acesso aos dados é tentado a partir de qualquer camada. Esta restrição torna a sua segurança mais fiável e robusta, reduzindo a área de superfície do seu sistema de segurança geral. Além disso, a segurança em nível de coluna também elimina a necessidade de introduzir exibições para filtrar colunas para impor restrições de acesso aos usuários.
Você pode implementar segurança em nível de coluna com a sintaxe T-SQL GRANT Object Permissions . Com esse mecanismo, a autenticação SQL e a autenticação Microsoft Entra ID (anteriormente Azure Ative Directory) são suportadas.
Considere também a capacidade de impor segurança em nível de linha em tabelas, com base em um filtro de WHERE cláusula.
Sintaxe
A sintaxe da instrução de permissões de GRANT objeto permite conceder permissões para listas de colunas delimitadas por vírgulas numa tabela.
GRANT <permission> [ ,...n ] ON
[ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
TO <database_principal> [ ,...n ]
[ WITH GRANT OPTION ]
[ AS <database_principal> ]
<permission> ::=
SELECT
| UPDATE
<database_principal> ::=
Database_user
| Database_role
| Database_user_mapped_to_Windows_User
| Database_user_mapped_to_Windows_Group
Exemplos
O exemplo a seguir mostra como restringir o acesso de TestUser à coluna SSN da tabela Membership.
Crie Membership uma tabela com SSN coluna usada para armazenar números de segurança social:
CREATE TABLE Membership
(MemberID int IDENTITY,
FirstName varchar(100) NULL,
SSN char(9) NOT NULL,
LastName varchar(100) NOT NULL,
Phone varchar(12) NULL,
Email varchar(100) NULL);
Permita TestUser acessar todas as colunas, exceto a SSN coluna, que tem os dados confidenciais:
GRANT SELECT ON Membership(MemberID, FirstName, LastName, Phone, Email) TO TestUser;
As consultas executadas como TestUser falham se incluírem a SSN coluna:
SELECT * FROM Membership;
Com o erro resultante:
Msg 230, Level 14, State 1, Line 12
The SELECT permission was denied on the column 'SSN' of the object 'Membership', database 'CLS_TestDW', schema 'dbo'.
Casos de uso
Alguns exemplos de como a segurança em nível de coluna está sendo usada atualmente:
- Uma empresa de serviços financeiros permite que apenas gerentes de conta tenham acesso a números de segurança social (SSN) de clientes, números de telefone e outros dados pessoais.
- Um prestador de cuidados de saúde permite que apenas médicos e enfermeiros tenham acesso a registos médicos sensíveis, ao mesmo tempo que impede que os membros do departamento de faturação visualizem estes dados.