#03 – Para que serve

Muito bom dia, senhoras e senhores!!!!

Mas que beleza, parece até coincidência mas o último para que serve também foi publicado em uma Sexta – Feira. Talvez você pode estar se perguntando, porque estou publicando o terceiro post deste sessão no mês de Abril.

Cadê o post do mês de Março? Ai eu vou dar um veja bem e dizer que acabei não conseguindo publicar no mês passado o post que estou escrevendo hoje, peço desculpas, mas a vida tem destas e outras situações que acabam mudando nossos planos.

No para que serve de hoje, vou publicar um script que utilizo bastante nas minhas aulas de segurança de banco de dados e recentimente utilizei em uma apresentação que realizei na Fatec de São Roque para um grupo de professores Mestres e Doutores especialistas em Banco de Dados e Engenharia de Softwares.

Antes de começar a falar deste post, se você quiser acessar os outros post desta nova sessão, fique a vontade utilize um dos links abaixo:

  1. https://pedrogalvaojunior.wordpress.com/2016/02/26/02-para-que-serve/
  2. https://pedrogalvaojunior.wordpress.com/2016/01/28/01-para-que-serve/

Bom divertimento, começa aqui o #03 – Para que serve!!!

Basicamente quando falamos de segurança de banco de dados, temos sempre em mente a preocupação e perguntas que nos fazem querer obter respostas de forma rápida, precisa e confiável. Vou destacar alguma destas perguntas que normalmente queremos saber:

  • Quem esta realizando o acesso?
  • O que esta sendo acesso?
  • Quais as permissões para um determinado objeto ou banco de dados?
  • Este usuário deve realmente ter esta permissão?
  • A senha do login foi definida de forma forte?
  • Quando um determinado login tentou realizar o último acesso?
  • Este login esta digitando a senha de forma correta?
  • A política de senhas esta sendo respeitada?

Enfim estas e outras diversas ou até mesmo milhares de dúvidas e perguntas são feitas quase que todos os dias, pois queremos sempre manter nosso ambiente seguro e confiável e quando falamos nisso estamos se referindo a área da Segurança da Informação, onde encontramos a tríade CIA (Confidentiality, Integrity and Availability) — Confidencialidade, Integridade e Disponibilidade. Há junção destes quatro elementos representa os principais atributos que, atualmente, orientam a análise, o planejamento e a implementação da segurança para um determinado grupo de informações que se deseja proteger. Outros atributos importantes são a irretratabilidade e a autenticidade.

Como o SQL Server é um produto que trabalho dentro das normas e padrões de tecnologia e segurança, entendo que seja importante destacar um pouco sobre estes elementos, para tentar elucidar e esclarecer a importância de cada um deles, gostaria de compartilhar com vocês um pouco do que conheço sobre estes conceitos:

Segurança da informação – Está relacionada com proteção de um conjunto de informações, no sentido de preservar o valor que possuem para um indivíduo ou uma organização. Atualmente o conceito de Segurança da Informação está padronizado pela norma ISO/IEC 17799:2005, influenciada pelo padrão inglês (British Standard) BS 7799. A série de normas ISO/IEC 27000 foram reservadas para tratar de padrões de Segurança da Informação, incluindo a complementação ao trabalho original do padrão inglês. A ISO/IEC 27002:2005 continua sendo considerada formalmente como 17799:2005 para fins históricos.

Confiabilidade: Característica que limita o acesso a informação tão somente às entidades legítimas, ou seja, àquelas autorizadas pelo proprietário da informação.

Integridade: Permite que a informação manipulada mantenha todas as características originais estabelecidas pelo proprietário da informação, incluindo controle de mudanças e garantia do seu ciclo de vida (nascimento,manutenção e destruição).

Disponibilidade: Assegura que a informação esteja sempre disponível para o uso legítimo, ou seja, por aqueles usuários autorizados pelo proprietário da informação.

Autenticidade: Garante que a informação é proveniente da fonte anunciada e que não foi alvo de mutações ao longo de um processo.

Irretratabilidade ou não repúdio: Garante a impossibilidade de negar a autoria em relação a uma transação anteriormente feita.

Vamos em frente, já conhecemos um pouco sobre estes conceitos que se relacionam com segurança da informação e também com o SQL Server em todos os seus níveis de permissão. Você pode estar querendo entender no que isso tem relação com o para que serve de número 03, posso lhe dizer com toda certeza que se você simplesmente acessar o seu SQL Server e começar a manipular os seus objetos e dados, vai conseguir ter toda noção do quanto cada um deste itens estão interligados, ainda mais quando falamos de Logins e Senhas que justamente o que vou compartilhar como recurso do #03 Para que serve.

 


 

 

Neste terceiro post desta sessão estaremos utilzando um Script apresentado abaixo, que demonstra a capacidade do SQL Server em armazenar e retornar informações sobre nossos Logins e Passwords. Onde, provavelmente estas informações poderão responder algumas das nossas principais preocupações relacionadas ao nossos servidores e bancos de dados.

Agora é a hora de apresentar o #03 – Para que serve:

SELECT l.name,

CAST(CASE sp.[state] WHEN N’D’ THEN 1 ELSE 0 END AS bit) AS DenyWindowsLogin,

CASE WHEN N’U’ = l.type THEN 0

WHEN N’G’ = l.type THEN 1

WHEN N’S’ = l.type THEN 2

WHEN N’C’ = l.type THEN 3

WHEN N’K’ = l.type THEN 4 END AS LoginType,

CAST(CASE WHEN (sp.[state] IS NULL) THEN 0 ELSE 1 END AS bit) AS HasAccess,

CAST(sl.is_policy_checked AS bit) AS PasswordPolicyEnforced,

CAST(sl.is_expiration_checked AS bit) AS PasswordExpirationEnabled,

l.create_date AS CreateDate,

l.modify_date AS DateLastModified,

LOGINPROPERTY(l.name, N’BadPasswordCount’) AS BadPasswordCount,

LOGINPROPERTY(l.name, N’BadPasswordTime’) AS BadPasswordTime,

LOGINPROPERTY(l.name, N’DaysUntilExpiration’) AS DaysUntilExpiration,

LOGINPROPERTY(l.name, N’IsExpired’) AS IsExpired,

LOGINPROPERTY(l.name, N’IsLocked’) AS IsLocked,

LOGINPROPERTY(l.name, N’IsMustChange’) AS IsMustChange,

LOGINPROPERTY(l.name, N’LockoutTime’) AS LockoutTime,

LOGINPROPERTY(l.name, N’PasswordLastSetTime’) AS PasswordLastSetTime,

l.is_disabled AS IsDisabled

FROM sys.server_principals AS l

LEFT OUTER JOIN sys.server_permissions AS sp

ON sp.grantee_principal_id = l.principal_id

AND sp.[type] = N’COSQ’ — Connect permissions

LEFT OUTER JOIN sys.sql_logins AS sl

ON sl.principal_id = l.principal_id

LEFT OUTER JOIN sys.credentials AS c

ON c.credential_id = l.credential_id

WHERE

l.[type] IN (‘U’, ‘G’, ‘S’, ‘C’, ‘K’)

AND l.principal_id NOT BETWEEN 101 AND 255 — ##MS% certificates

AND

( sp.[state] = N’D’ — DenyWindowsLogin

OR sp.[state] IS NULL — HasAccess

OR CAST(sl.is_policy_checked AS bit) = 0

OR CAST(sl.is_expiration_checked AS bit) = 0

OR l.create_date > GETDATE()-1

OR l.modify_date > GETDATE()-1

OR l.is_disabled > 0

OR LOGINPROPERTY(l.name, N’DaysUntilExpiration’)<= 5

OR LOGINPROPERTY(l.name, N’IsExpired’) > 0

OR LOGINPROPERTY(l.name, N’IsLocked‘) > 0

OR LOGINPROPERTY(l.name, N’IsMustChange‘) > 0

OR LOGINPROPERTY(l.name, N’BadPasswordCount‘) > 2

)

Vale ressaltar que este código pode ser utilizado a partir do Microsoft SQL Server 2008 ou versões superiores.


 

 

Você vai poder observar que algumas das mais importantes DMVs e Views existentes no SQL Server estão sendo utilizadas neste script como mecanismos para consulta e obtenção de informações dos nossos Logins e Password, dentre elas destaco:

Além disso, também estamos utilizando uma função de sistema chamada LoginProperty presente deste as primeiras versões do SQL Server, sendo esta função um dos principais elementos que compõem a estrutura deste script, responsável por permitir apresentar as propriedades que cada login possui dentro de um servidor SQL Server.

 


Muito bem, é isso pessoal, chegamos ao final de mais um Para que Serve.

E ai gostou do #03 – Para que serve, eu gostei, claro sou suspeito a falar, mas torço e espero que você tenha gostado, de preferência de todo post, mas isso não for possível, quem sabe pelo menos uma parte espero que tenha chamado a sua atenção.

Com isso chegamos ao final de mais um Para que Serve, agradeço sua participação e visita ao meu blog. Não deixe de contribuir com críticas, sugestões, comentários, opiniões, enfim contribua também interagindo cada vez mais proporcionando esta troca de conhecimento.

Um grande abraço, sucesso, nos encontramos em breve.

Tchau.

 

Autor: Junior Galvão - MVP

Profissional com vasta experiência na área de Tecnologia da Informação e soluções Microsoft. Graduado no Curso Superior em Gestão da Tecnologia de Sistemas de Informação pela Uninove - Campus São Roque. Pós-Graduado no Curso de Gestão e Engenharia de Processos para Desenvolvimento de Software com RUP na Faculdade FIAP - Faculdade de Informática e Administração Paulista de São Paulo. Pós-Graduado em Gestão da Tecnologia da Informação Faculdade - ESAMC Sorocaba. Cursando Mestrado em Ciências da Computação - UFSCar - Campus - Sorocaba. Formação MCDBA Microsoft, autor de artigos acadêmicos e profissionais postados em Revistas, Instituições de Ensino e WebSistes. Meu primeiro contato com tecnologia ocorreu em 1995 após meus pais comprarem nosso primeiro computador, ano em que as portas para este fantástico mundo se abriram. Neste mesmo ano, comecei o de Processamento de Dados, naquele momento a palavra TI não existia, na verdade a Tecnologia da Informação era conhecida como Computação ou Informática, foi assim que tudo começou e desde então não parei mais, continuando nesta longa estrada até hoje. Desde 2001 tenho atuado como Database Administrator - Administrador de Banco de Dados - SQL Server em tarefas de Administração, Gerenciamento, Migração de Servidores e Bancos de Dados, Estratégias de Backup/Restauração, Replicação, LogShipping, Implantação de ERPs que utilizam bancos SQL Server, Desenvolvimento de Funções, Stored Procedure, Triggers. Experiência na Coordenação de Projetos de Alta Disponibilidade de Dados, utilizando Database Mirroring, Replicação Transacional e Merge, Log Shipping, para versões: 2000, 2005, 2008, 2008 R2, 2012 e 2014. Atualmente trabalho como Administrador de Banco de Dados no FIT - Instituto de Tecnologia da Flextronics, como também, Consultor em Projetos de Tunnig e Performance para clientes. Desde 2008 exerço a função de Professor Universitário, para as disciplinas de Banco de Dados, Administração, Modelagem de Banco de Dados, Programação em Banco de Dados, Sistemas Operacionais, Análise e Projetos de Sistemas, entre outras. Possuo titulação Oficial Microsoft MVP - SQL Server renovada desde 2007.

Um comentário em “#03 – Para que serve”

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s