360 likes | 465 Vues
Explore security features, scope hierarchies, user separation, metadata limits, and secure execution contexts in Microsoft SQL Server 2008. Learn about security models, authentication mechanisms, components, logins, permissions, and more.
E N D
Sistemas de Informação Redes de Computadores Análise e Desenvolvimento de Sistemas Administração de Banco de Dados 1º Semestre – 2011 Pedro Antonio Galvão Junior E-mail: pedrogalvaojunior@gmail.com Fone: 9531-7555 pedro.galvao@aes.edu.br Versão 1.11.02 – Fev/2011.
SEGURANÇA NO MICROSOFT SQL SERVER 2008
Oferecendo Segurança • Políticas de senhas no login de SQL Server • Hierarquia dos escopos • Separação de usuários do schema • Limite de visualização dos metadados • Execução pelo contexto
Seguro por default Windows Server 2003 SQL Server 2005 • Serviços e features desligadas por padrão • Permite somente conexão local • Usa o SAC para habilitar/desabilitar as features • Upgrade preserva as configurações • Serviços e Features novas desabilitadas • Usa o SAC para habilitar/desabilitar as features Windows Server 2003 SQL Server 2000
MODELOS DE SEGURANÇA NO MICROSOFT SQL SERVER 2008
Mecanismos de Segurança • Autenticação • Usuário e senha • Certificados • Autorização • Permissões • Criptografia • Chaves Simétricas • Chaves Assimétricas
ComponentesdESegurança Principals • Windows • Groups • Domain account • Local account • SQL Server • SQL account • Server role • Database • User • Database role • Application role • Group • Securables • Server Scope • Logins • Endpoints • Databases • Database Scope • Users • Assemblies • Schemas • Schema Scope • Tables • Procedures • Views • Permissions • Grant/Revoke/Deny • Create • Alter • Drop • Control • Connect • Select • Execute • Update • Delete • Insert QUEM PODE ACESSAR O QUE
Conexão ao servidor SQL Server Estabelecer login Estabelecer acesso ao database Verificar as permissões para todas as ações Processo de AcessoSeguro Pedido de conexão pela rede / pre-login handshake Autenticação do Login no SQL Server Acesso ao database Tentar realizar alguma ação
Política de Senhas • Requer Windows Server 2003. • Autenticação Windows: • Login de usuários Windows • Respeita a política de senhas do Windows • Autenticação SQL Server: • Logins SQL Server • Respeita a política de senhas da máquina local. • Política de Domínio se estiver em um ambiente de Domínio • sys.sql_logins catalog view
Criando Logins Configuração da Politica de Senhas
Criando Logins CREATE LOGIN login_name { WITH < option_list1 > | FROM < sources > } < sources >::= WINDOWS [ WITH windows_options [,...] ] | CERTIFICATE certname | ASYMMETRIC KEY asym_key_name < option_list1 >::= PASSWORD = ' password ' [ HASHED ] [ MUST_CHANGE ] [ , option_list2 [ ,... ] ] < option_list2 >::= SID = sid | DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = language | CHECK_EXPIRATION = { ON | OFF} | CHECK_POLICY = { ON | OFF} [ CREDENTIAL = credential_name ] < windows_options >::= DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = language Configuração da Politica de Senhas
OPÇÕES DE LOGIN Usa a API NetValidatePasswordPolicy() do Windows Server 2003
Gerenciando Logins Removendo um Login DROP LOGIN <Login_name> Alterando um Login ALTER LOGIN <login_name> WITH PASSWORD = '3948wJ698FFF7'
Credenciais • Alternativa aos logins. • Permitem conexão a recursos fora do SQL Server. CREATE CREDENCIAL <nome> WITH IDENTITY = ‘identity name’, SECRET = ‘secret’
Default Schema • Um schema default pode ser atribuido quando o usuário do banco de dados é criado. CREATE USER user_name [ FOR {LOGIN login_name | CERTIFICATE cert_name | ASYMMETRIC KEY asym_key_name } ] [ WITH DEFAULT_SCHEMA = schema_name ] Especifica o schema default
Gerenciando Schemas • CREATE SCHEMA • Cria um schema • Atribui um ownership para o schema • Cria objetos de database como membros do schema • ALTER SCHEMA • Altera o ownership do schema • Move objetos de database entre schemas • DROP SCHEMA • Remove um schema
Servidor.BancoDados.Schema.Objeto Object Namespace Sales Customer AdventureWorks LON-SQL-01
Sales Customer Atribuindo Database Objects • sys.database_principals catalog view • sys.schemas catalog view SELECT * FROM Customer SELECT * FROM JobCandidate dbo SELECT * FROM dbo.JobCandidate [ WITH DEFAULT_SCHEMA = Sales ] JobCandidate
Application Compatibility Propriedade de Celia Sales SELECT CustomerID FROM Sales.Customer App Customer Alterando o proprietário para Katia Sales SELECT CustomerID FROM Sales.Customer App Customer
Usuários • Acesso ao Banco de dados; • Pode ser mapeado para um login individual ou para um grupo Windows; e • Pode ser criado pelo SSMS ou por T-SQL. CREATE USER user_name [{{ FOR | FROM } { LOGIN login_name | CERTIFICATE cert_name | ASYMMETRIC KEY asym_key_name } | WITHOUT LOGIN ] [ WITH DEFAULT_SCHEMA =schema_name ]
Gerenciando Usuários Apagando um usuário: DROP USER <user_name> Alternado configurações de um usuário: ALTER USER <user_name> WITH DEFAULT_SCHEMA = <nome_schema>
Introdução • Configura a execução pelo contexto de módulos; • Caller não requer permissões: • Effective with broken ownership chain • EXECUTE AS: • Caller (Default) • Username (requer permissão Impersonate) • Self • Owner
Processo de ExecuçãopeloContexto • sys.sql_modules catalog view DENY SELECT ON sales.customer TO Bill GRANT SELECT ON sales.customer TO Jane CREATE PROCEDURE GetCusts WITH EXECUTE AS OWNER AS SELECT * FROM sales.customer Bill Jane sales.customer (Owner:John) Stored Procedure (Owner: Jane)
Permissão Granular • Securables organizados em uma hierarquia: • Herança de permissões. • Todos os objetos tem permissões associadas. • Principal de menor previlégio.
Escopos de Permissões • Servidor: • O banco de dados Master deverá ter permissões Grant; e • Permissões específias para cada securable. • Database: • Pode atribuir permissões específicas para roles customizadas; • Permitir principals de executar tarefas no banco; e • Permissões Grant deverão ser atribuidas ao banco que contém o securable que quer aplicar a permissão. • Schema: • Usado para agrupar objetos de database; e • Atribuir permissões para o schema afeta os membros do Schema.
EscopoServer • Permissão GRANT em securables individuais quando as permissões da server role default são inapropriadas. • sys.server_permissions catalog view. Control permission on individual login GRANT CONTROL ON LOGIN::Tom TO Fred
Accounts HR Sales EscopoBanco de dados Sales.AddOrder • sys.database_permissions catalog view Accounts.AddAcct GRANT EXECUTE TO Jim Permissões herdadas no banco de dados HR.ViewEmps
Sales Escopo Schema sales.customers sales.accounts GRANT SELECT ON SCHEMA::Sales TO Mary sales.figures Permissões herdadas no schema
ObjetosIndividuais sales.customers sales.accounts GRANT SELECT ON sales.accounts TO Joe Sales.accounts sales.figures Permissões somente para objetos específicos