Dando sequência aos estudos do tópico Projetando Views, vamos abordar o assunto Implicações de Segurança.

 

Implicações de Segurança

Um dos benefícios ao se utilizar views é a camada de abstração de segurança que nos é proporcionada. Um usuário pode receber um grant de select em uma view, sem a necessidade de receber o mesmo grant de select nas tabelas base referenciadas. Isso significa que o usuário consegue fazer select na view, mas não consegue fazer select nas tabelas usadas pela view. Além disso, views é uma forma de implementar segurança tanto em coluna quanto em linha. É possível no SQL Server dar grant’s em colunas específicas de determinada tabela, mas não diretamente nas linhas. Imagine um cenário em que o DBA é requisitado a configurar as seguintes permissões para o usuário Pedro:

A) Visualizar e ler o conteúdo das colunas Código, Nome e CPF da tabela Cliente;

B) Ler apenas as linhas cuja coluna SALARIO seja inferior a R$ 1.000,00.

O primeiro requisito é fácil de ser atendido e, para isso, o grant de select poderia ser setado diretamente nas colunas da tabela. Contudo, para o segundo requisito não existe um “tipo de grant” e, desta forma, precisamos recorrer a uma abordagem que implemente ambos os requisitos numa única “tacada”. Vejamos como.

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”dXNlIERCRXhhbWU3MDQ2MQogZ28KLS0gU2UgYSB0YWJlbGEgQ2xpZW50ZSBleGlzdGlyIGVudMOjbyB2YW1vcyBkcm9ww6EtbGEKIElGIE9CSkVDVF9JRCgnZGJvLkNsaWVudGUnKSBJUyBOT1QgTlVMTAogRFJPUCBUQUJMRSBkYm8uQ2xpZW50ZTsKLS0gQ3JpYW5kbyBhIHRhYmVsYSBDTElFTlRFCiBDUkVBVEUgVEFCTEUgZGJvLkNsaWVudGUKICggQ29kaWdvIElOVCBOT1QgTlVMTCBJREVOVElUWSBQUklNQVJZIEtFWSwKIE5vbWUgdmFyY2hhcig1MCkgTk9UIE5VTEwsCiBTZXhvIENIQVIoMSkgTk9UIE5VTEwsCiBUZWxlZm9uZSBDSEFSKDgpIE5PVCBOVUxMLAogQ1BGIENIQVIoMTEpIE5PVCBOVUxMLAogU0FMQVJJTyBERUNJTUFMKDEwLDIpIE5PVCBOVUxMKTsKIEdPCi0tIEluc2VyaW5kbyBkdWFzIGxpbmhhcwogSU5TRVJUIElOVE8gZGJvLkNsaWVudGUgKE5vbWUsIFNleG8sIFRlbGVmb25lLCBDUEYsIFNhbGFyaW8pCiBWQUxVRVMgKCdNYXJpYScsICdGJywgJzEyMzQ1Njc4JywgJzAwMDAwMDAwMDAwJywgNTYwLjUwKTsKSU5TRVJUIElOVE8gZGJvLkNsaWVudGUgKE5vbWUsIFNleG8sIFRlbGVmb25lLCBDUEYsIFNhbGFyaW8pCiBWQUxVRVMgKCdKb2FuYScsICdGJywgJzEyMzQ1Njc4JywgJzExMTExMTExMTExJywgMjMwMC40NCk7CiBHTwpJRiBPQkpFQ1RfSUQoJ2Riby52d0NsaWVudGVzJykgSVMgTk9UIE5VTEwKIERST1AgVklFVyBkYm8udndDbGllbnRlczsKIEdPCi0tIENyaWFuZG8gYSB2aWV3CiBDUkVBVEUgVklFVyBkYm8udndDbGllbnRlcwogQVMKIFNFTEVDVCBjLkNvZGlnbywgYy5Ob21lLCBjLkNQRgogRlJPTSBkYm8uQ2xpZW50ZSBjCiBXSEVSRSBjLlNBTEFSSU8gPCAxMDAwLjAwCiBHTw==” hover_enabled=”0″]dXNlIERCRXhhbWU3MDQ2MQogZ28KLS0gU2UgYSB0YWJlbGEgQ2xpZW50ZSBleGlzdGlyIGVudMOjbyB2YW1vcyBkcm9ww6EtbGEKIElGIE9CSkVDVF9JRCgnZGJvLkNsaWVudGUnKSBJUyBOT1QgTlVMTAogRFJPUCBUQUJMRSBkYm8uQ2xpZW50ZTsKLS0gQ3JpYW5kbyBhIHRhYmVsYSBDTElFTlRFCiBDUkVBVEUgVEFCTEUgZGJvLkNsaWVudGUKICggQ29kaWdvIElOVCBOT1QgTlVMTCBJREVOVElUWSBQUklNQVJZIEtFWSwKIE5vbWUgdmFyY2hhcig1MCkgTk9UIE5VTEwsCiBTZXhvIENIQVIoMSkgTk9UIE5VTEwsCiBUZWxlZm9uZSBDSEFSKDgpIE5PVCBOVUxMLAogQ1BGIENIQVIoMTEpIE5PVCBOVUxMLAogU0FMQVJJTyBERUNJTUFMKDEwLDIpIE5PVCBOVUxMKTsKIEdPCi0tIEluc2VyaW5kbyBkdWFzIGxpbmhhcwogSU5TRVJUIElOVE8gZGJvLkNsaWVudGUgKE5vbWUsIFNleG8sIFRlbGVmb25lLCBDUEYsIFNhbGFyaW8pCiBWQUxVRVMgKCdNYXJpYScsICdGJywgJzEyMzQ1Njc4JywgJzAwMDAwMDAwMDAwJywgNTYwLjUwKTsKSU5TRVJUIElOVE8gZGJvLkNsaWVudGUgKE5vbWUsIFNleG8sIFRlbGVmb25lLCBDUEYsIFNhbGFyaW8pCiBWQUxVRVMgKCdKb2FuYScsICdGJywgJzEyMzQ1Njc4JywgJzExMTExMTExMTExJywgMjMwMC40NCk7CiBHTwpJRiBPQkpFQ1RfSUQoJ2Riby52d0NsaWVudGVzJykgSVMgTk9UIE5VTEwKIERST1AgVklFVyBkYm8udndDbGllbnRlczsKIEdPCi0tIENyaWFuZG8gYSB2aWV3CiBDUkVBVEUgVklFVyBkYm8udndDbGllbnRlcwogQVMKIFNFTEVDVCBjLkNvZGlnbywgYy5Ob21lLCBjLkNQRgogRlJPTSBkYm8uQ2xpZW50ZSBjCiBXSEVSRSBjLlNBTEFSSU8gPCAxMDAwLjAwCiBHTw==[/et_pb_dmb_code_snippet]

Até neste ponto temos o nosso cenário construído. Agora vamos criar um usuário de banco e conceder grant de select sobre a view. Não se preocupem especificamente com as instruções de criação e gerenciamento de usuário, pois as mesmas estão fora do escopo do exame 70-461.

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”LS0gQ3JpYW5kbyB1bSB1c3XDoXJpbyBkZSBiYW5jbyBkZSBub21lIFBlZHJvCiBDUkVBVEUgVVNFUiBQZWRybyBXSVRIT1VUIExPR0lOOwotLSBDb25jZWRlbmRvIG8gR1JBTlQgZGUgU0VMRUNUIHBhcmEgUGVkcm8KIEdSQU5UIFNFTEVDVCBPTiBkYm8udndDbGllbnRlcyBUTyBQZWRybzsKLyoKIE5lc3RlIG1vbWVudG8gZXN0b3UgYWx0ZXJhbmRvIG8gY29udGV4dG8gZGUgc2VndXJhbsOnYSBkYSBzZXNzw6NvIGUKIGFzc3VtaW5kbyBhIGlkZW50aWRhZGUgZG8gdXN1w6FyaW8gUGVkcm8KICovCiBFWEVDVVRFIEFTIFVTRVIgPSAnUGVkcm8nOwovKgogVmVqYSBxdWUgUGVkcm8gbsOjbyBjb25zZWd1ZSBmYXplciB1bSBzZWxlY3QKIGRpcmV0YW1lbnRlIG5hIHRhYmVsYSBDbGllbnRlCiAqLwogU0VMRUNUICogRlJPTSBkYm8uQ2xpZW50ZTs=” hover_enabled=”0″]LS0gQ3JpYW5kbyB1bSB1c3XDoXJpbyBkZSBiYW5jbyBkZSBub21lIFBlZHJvCiBDUkVBVEUgVVNFUiBQZWRybyBXSVRIT1VUIExPR0lOOwotLSBDb25jZWRlbmRvIG8gR1JBTlQgZGUgU0VMRUNUIHBhcmEgUGVkcm8KIEdSQU5UIFNFTEVDVCBPTiBkYm8udndDbGllbnRlcyBUTyBQZWRybzsKLyoKIE5lc3RlIG1vbWVudG8gZXN0b3UgYWx0ZXJhbmRvIG8gY29udGV4dG8gZGUgc2VndXJhbsOnYSBkYSBzZXNzw6NvIGUKIGFzc3VtaW5kbyBhIGlkZW50aWRhZGUgZG8gdXN1w6FyaW8gUGVkcm8KICovCiBFWEVDVVRFIEFTIFVTRVIgPSAnUGVkcm8nOwovKgogVmVqYSBxdWUgUGVkcm8gbsOjbyBjb25zZWd1ZSBmYXplciB1bSBzZWxlY3QKIGRpcmV0YW1lbnRlIG5hIHRhYmVsYSBDbGllbnRlCiAqLwogU0VMRUNUICogRlJPTSBkYm8uQ2xpZW50ZTs=[/et_pb_dmb_code_snippet]
[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”LS0gUGVkcm8gY29uc2VndWUgY29uc3VsdGFyIGEgdmlldyB2d0NsaWVudGVzCiBTRUxFQ1QgKiBGUk9NIGRiby52d0NsaWVudGVzOw==” hover_enabled=”0″]LS0gUGVkcm8gY29uc2VndWUgY29uc3VsdGFyIGEgdmlldyB2d0NsaWVudGVzCiBTRUxFQ1QgKiBGUk9NIGRiby52d0NsaWVudGVzOw==[/et_pb_dmb_code_snippet]

Conclusão

No próximo post estarei quebrando a sequência de tópicos do exame para atender a um pedido dos leitores que vêm acompanhando esta série: apresentar uma lista de material de estudo complementar. Vou elencar os tópicos e apontar fontes de estudo para cada um. Até lá.