DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Revelada a Segurança de Tempo de Execução da Base de Dados OpenEdge® Regis Martins Ezipato Sr. Solution Engineer Agenda Cenário da segurança de banco em tempo de 2 execução Segurança de banco OpenEdge 10 Comparando tempo de execução e tempo de compilação Configurando segurança em tempo de execução de banco DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 1 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Propulsor da segurança de banco em tempo de execução Por que usamos segurança de banco em tempo de execução: Porque você tem que atender • Regulamentações governamentais • Padrões da indústria • Requerimentos de privacidade de dados pessoais Responsabilidade legal • Penalidades $$ impostas É tudo por causa dos hackers • Eles tem ferramentas • Eles tem conhecimento • Eles tem a motivação 3 © 2007 Progress Software Corporation DB-14: OpenEdge Database Run-time Security Revealed Segurança de banco Num mundo perfeito, a camada de aplicação não tem regras de segurança: (Chapéu-preto do hacker) SO/Segurança Rede Aplicação A Aplicação B Aplicação C xDBC Driver xDBC Driver xDBC Driver Servidor BD Utilitários Banco (arquivos de Cache) RDBMS (blocos indices) 4 Arq. SO DB-14: OpenEdge Database Run-time Security Revealed (blocos registros) © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 2 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Segurança de banco Na realidade, a camada de aplicação tem muitas vulnerabilidades: SO/Segurança Rede Aplicação A Aplicação B Aplicação C xDBC Driver xDBC Driver xDBC Driver Servidor BD Utilitários Banco (arquivos De cache) RDBMS (blocos indices) 5 Arq. SO (blocos registros) DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Função da segurança de banco em tempo de execução Camadas de bloco de código-aplicação & acesso inapropriado do usuário: SQL indica o padrão para segurança de banco em tempo de execução • Autenticação Usuário • Administração Banco de Dados • Controle de acesso a Views, tabelas & colunas Fornecedores de banco de dados adicionam características de segurança • Múltiplos sistemas de autenticação de usuário • Privilégios de conexão de usuário • Função & privilégios por grupo-usuários 6 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 3 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Agenda Cenário da segurança de banco em tempo de 7 execução Segurança de banco OpenEdge 10 Comparando tempo de execução e tempo de compilação Configurando segurança em tempo de execução de banco © 2007 Progress Software Corporation DB-14: OpenEdge Database Run-time Security Revealed Segurança de Banco do OpenEdge Um Banco – 2 sistemas de segurança: Servidor SQL ABL Aplicação Aplicação ISUD ISUD Autenticação Autenticação Usuário Usuário Autenticação Autenticação Usuário Usuário Autenticação Autenticação Usuário Usuário OpenEdge RDBMS • Banco armazena motor que executa operações sem segurança Autenticação Autenticação Usuário Usuário Conta ContaUsuário Usuário Privilégios PrivilégiosSQL SQL Permissões PermissõesABL ABL Tabelas TabelasPúblicas Públicas • Clientes SQL & ABL providenciam toda a segurança do banco 8 aplicação aplicação CRUD CRUD Tabelas TabelasSQL SQL DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 4 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Comparando Sistemas de Segurança ABL & SQL ABL 9 SQL Modelo Segurança GRANT GRANT Padrão DBA n/d Padrão Segurança administrador Padrão acesso tabela “*” <criador-bd> SYSPROGRESS n/d “*” <nenhum> Padrão acesso campo “*” <nenhum> © 2007 Progress Software Corporation DB-14: OpenEdge Database Run-time Security Revealed Auditoria do Banco OpenEdge Como saber se o sistema de segurança não foi comprometido? Servidor SQL ABL Aplicação Aplicação ISUD ISUD Autenticação Autenticação Usuário Usuário Autenticação Autenticação Usuário Usuário Autenticação Autenticação Usuário Usuário Autenticação Autenticação Usuário Usuário OpenEdge RDBMS • Nenhuma operação de acesso a registros via SQL ou ABL pode sobrepor a auditoria aplicação aplicação CRUD CRUD policies.xml Regras RegrasAuditoria Auditoria Subsistema SubsistemaAuditoria Auditoria Dados DadosAuditoria Auditoria Schema Schema&& tabela tabelade dedados dados 10 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 5 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Autenticação Usuário 11 © 2007 Progress Software Corporation DB-14: OpenEdge Database Run-time Security Revealed Contas de Usuários compartilhadas pela ABL & SQL Tabela de usuários _User : Dois campos requeridos • user-id (_Userid) – Tamanho Máximo: – Caracteres Ilegais: • password 12 < 32 or “#*,!@” (_Password) – ABL: Alterado somente pelo dono da conta – SQL: Alterado pelo DBA ou dono da conta Campo Password: Cuidados nas definições do padrão da conta do SQL DBA • <dono-bd> • SYSPROGRESS • PUB 12 tamanho-fixo CRC-16 hash (Privilégios DBA) (Privilégios DBA) (Privilégios dono das tabelas) DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 6 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Funcionamento contas _User via ABL & SQL ABL SQL • Sem contas_User • Sem contas _User – User-id: ID do SO – Não pode usar –U –P para conectar – User-id padrão: nenhum – Conecta com qualquer user-id exceto • “PUB” • “SYSPROGRESS” (senhas ignoradas) • Com contas _User • Com contas_User – User-id padrão: nenhum – DEVE se autenticar como conta do _User – PUB & SYSPROGRESS aceitos como user-ids – User-id padrão: “” – -U/-P devem ser iguais ao do_user – Pode sempre CONECTAR como usuário padrão 13 © 2007 Progress Software Corporation DB-14: OpenEdge Database Run-time Security Revealed Movendo ABL para User-id Tudo acontece dentro de programas ABL : ABL: run _edit.p. _edit.p run _prostar.p. _prostar.p run _login.p. * Fontes encontrados no DLC/src & PSDN development tools download 14 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 7 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Administrando conta de usuário via ABL & SQL Operações de contas de usuários similares : ABL 15 SQL Criação Conta CREATE _user CREATE USER Deleção Conta DELETE _user DROP USER Alteração Senha ASSIGN field ALTER USER Criação Senha ENCODE () N/D © 2007 Progress Software Corporation DB-14: OpenEdge Database Run-time Security Revealed Segurança de Banco do OpenEdge Alternativa autenticação de usuário somente para aplicações ABL Servidor SQL ABL Login Usuário credenciado Conta ContaUsuário Usuário ( (_user _user) ) Autenticação Usuário É válido? Y conectando user-id Aplicação ABL Autenticação Usuário Prova de autenticação de Usuário ABL CLIENTEPRINCIPAL Validação CLIENTEPRINCIPAL ABL É valid0? Configuração Configuração Autenticação Autenticação A 16 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 8 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Autorização do Usuário 17 © 2007 Progress Software Corporation DB-14: OpenEdge Database Run-time Security Revealed Todas as tabelas tem um dono Ambos clientes ABL & SQL respeitam o “dono” da tabela : “PUB” (Servidor SQL& ABL user-id) • Tabelas de Dados – Clientes ABL: Criação, Leitura, Alteração & Deleção – Clientes SQL: Inserção, Seleção, Alteração & Deleção • Tabelas do Meta Schema – Clientes ABL: – Clientes SQL: “SYSPROGRESS” Criação, Leitura, Alteração & Deleção Seleção (user-id privado para Servidor SQL) • Clientes ABL : nenhum • Clientes SQL : Seleção “<cliente-sql>” (suportado somente pelo Servidor SQL) • Clientes SQL : Inserção, Seleção, Alteração & Deleção • Clientes ABL : nenhum 18 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 9 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Centro da segurança de banco via ABL Administrado via registro _schema para operações CRUD: assign _Canwrite Registro Registro_Field _Field Permissões Permissões find for create delete F1 F1 F2 F2 F3 F3 _Canread F4 F4 F5 F5 F6 F6 _Cancreate _File _File Permissões Permissões * Algumas vezes permissões residem em tabelas & campos do meta-schema 19 F7 F7 _Canwrite _Canread _Candelete Dados DadosTabela Tabela © 2007 Progress Software Corporation DB-14: OpenEdge Database Run-time Security Revealed Segurança de banco via Servidor SQL Administrado via comandos SQL GRANT/REVOKE : Somente alteração de colunas selecionadas alter _syscolauth _syscolauth Privilégios Privilégios select insert update delete update F1 F1 F2 F2 F3 F3 update F4 F4 _systabauth _systabauth Privilégios Privilégios F5 F5 F6 F6 insert F7 F7 update select delete Dados DadosTabela Tabela 20 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 10 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Segurança de banco via Servidor SQL Agrupado para uma mistura de linhas & colunas selecionadas : alter _syscolauth _syscolauth Privilégios Privilégios select insert update delete update F1 F1 F2 F2 F3 F3 Nenhum acesso de leitura por exclusão update F4 F4 _systabauth _systabauth Privilégios Privilégios F5 F5 F6 F6 create insert update select read delete Dados DadosTabela Tabela View View Privilégios Privilégios 21 F7 F7 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Administração de Banco 22 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 11 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Padrão de administração de banco via SQL DBA tem todos os privilégios* de banco Um usuário deve ter um privilégio antes de DOAR (GRANT) privilégios para outros O doador de um privilégio pode ANULAR (REVOKE) aquele privilégio Um privilégio pode ser DOADO sem a habilidade para doá-lo para qualquer outro usuário “Dono” da Tabela tem todos os privilégios para tabela & coluna * Exceto OpenEdge Auditing SoD (Separação de deveres) 23 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Administrador de segurança via ABL revelado Administrador de segurança via ABL NÃO É UM DBA Administrador de segurança via ABL controla • Acesso a Tabelas & campos via permissões _Can-* • Criação & deleção de contas dos usuários • Cliente ABL & Opções de segurança de banco A lista de usuários Administradores de Segurança é replicada em muitos lugares • Veja PSDN open-source development tools – src/prodict/user/_usradmn.p 24 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 12 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Agenda Cenário da segurança de banco em tempo de 25 execução Segurança de banco OpenEdge 10 Comparando tempo de execução e tempo de compilação Configurando segurança em tempo de execução de banco © 2007 Progress Software Corporation DB-14: OpenEdge Database Run-time Security Revealed Segurança em Tempo-Compilação X Tempo-Execução Tempo Compilação Conectando user-id Fixo Dinâmico Acesso Tabela & coluna Fixo Dinâmico Impacto Tempo-Execução < tempo-execução > Tempo compilação Segurança aplicação por Sim contexto Risco a segurança por usuário Alto personificado & r-code traiçoeiro 26 Tempo Execução DB-14: OpenEdge Database Run-time Security Revealed Não Baixo © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 13 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Segurança Banco OpenEdge ABL .r-code contém somente operações permitidas para CRUD: Login user credenciados Todos reg. operações Servidor Banco OE Compilador Núcleo ABL .p fonte (CRUD) Buffer dinâmico (CRUD) Autenticação Usuário Buffer estático conectando user-id Contas usuários ( _user ) (RU) Permissões .r compilado (RU) user acessa? Checa user-id para operações permitidas Operações Registros Permitidas 27 Dados Públicos (RU) © 2007 Progress Software Corporation DB-14: OpenEdge Database Run-time Security Revealed Segurança Banco OpenEdge Padrão de checagem de permissão em tempo-execução via ABL: Login user credenciados Servidor Banco OE Executor Núcleo ABL .r compilado (RU) autenticação usuário Checado em tempo execução Contas usuários ( _user ) conectando user-id Permissões .r compilado (CRUD) Buffer dinâmico user acessa? Dados Públicos Buffer estático Não checado em tempo de execução 28 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 14 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Segurança Banco OpenEdge Núcleo ABL checagem permissão em tempo-execução opcional: Login user credenciados Servidor Banco OE Executor Núcleo ABL Autenticação Usuário .r compilado (RU) Contas usuários ( _user ) conectando user-id Permissões .r compilado (CRUD) 29 Buffer dinâmico user acessa? Dados Públicos Buffer estático DB-14: OpenEdge Database Run-time Security Revealed Todas operações checadas em tempo execução © 2007 Progress Software Corporation Agenda Cenário da segurança de banco em tempo de 30 execução Segurança de banco OpenEdge 10 Comparando tempo de execução e tempo de compilação Configurando segurança em tempo de execução de banco DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 15 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Configurando Segurança de Banco A melhor segurança de banco vem de múltiplas camadas : 31 Segurança de aplicação ABL & SQL (Adiciona segurança de aplicação contextual para as características de segurança construídas na base de dados) Segurança em tempo execução do banco OpenEdge (Protege a base de um código de aplicação e/ou usuário “traiçoeiro”) Sistema de permissões de arquivos do SO (Protege utilitários de banco, configuração e arquivos de dados de outros processos do SO) DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Opções de segurança de banco OpenEdge Muitas opções de segurança disponíveis para ajustar-se a sua aplicação : 1. 2. 3. 4. 32 Administração do Banco Conexão de usuário ao banco Acesso a Tabela & coluna/campo Auditoria de banco DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 16 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Início da segurança com Conta de Usuário Quando as contas de usuário de banco são requeridas? Um local para iniciar “Banco contém dados privados ou confidenciais?” SIM: Eu configuraria contas de usuários de banco 1 ou mais administrador de contas _user 1 ou mais contas de _user para acesso a dados Elimina contas default de usuários embutidas “Contas _user requeridas para usuários individuais?” Se servidor SQL é usado: SIM Se SQL não é usado: pode usar contas de usuários de aplicação via o objeto CLIENT-PRINCIPAL 33 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Passos para administrar segurança de banco Servidor SQL é usado, configure a segurança de DBA primeiro: 1. Conecte SQL Explorer como um user-id qualquer e encontre o “db-owner” do banco SELECT * from SYSPROGRESS.SYSDBAUTH; 2. É o user-id que não é o “SYSPROGRESS” 3. Reconecte SQL explorer com o user-id “db-owner” 4. Crie uma conta de DBA comum para ABL/SQL CREATE USER ‘MYDBA’, ‘dba-pwd’; GRANT RESOURCE, DBA to MYDBA; 34 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 17 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Passos para administrar segurança de banco Nomeando DBAs para SQL & donos das tabelas : 1. Conecte SQL Explorer como MYDBA 2. Crie conta de usuário com senhas conhecidas CREATE USER ‘SYSPROGRESS’, ‘pwd’; CREATE USER ‘<db-owner>’, ‘pwd’; CREATE USER ‘PUB’, ‘pwd’; 35 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Passos para administrar segurança de banco Defina Administrador de Segurança ABL: Use Data Administration Tool para retirar o acesso PUBLIC do Administrador de Segurança 1. Defina conta de usuário de administração comum para ABL [ & SQL] [“MYDBA”] Admin->Security->Edit User list… 2. Coloque a lista do administrador de segurança para “MYDBA” * Admin->Security->Security Administrators… 36 * Melhores práticas indicam 2 contas de usuários definidas DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 18 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Administração do schema de banco Cliente ABL não pode alterar privilégios de usuários SQL Cliente SQL não pode alterar permissões de usuários ABL Defina seu DBA-ABL por privilégio (grant) • Grant PUBLIC (“*”) to _File._Can-read • Grant _Can-create, _Can-write, _Can-delete para lista de contas do administrador de segurança ABL para security schema “_File._File” “_File._Field” “_File._Index” “_File._Index-field” 37 “_File._sec-role” “_File._sec-granted-role” “_File._sec-authentication-domain “_File._sec-authentication-system DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Habilite Características de Segurança Avançadas ABL 1. 2. Atualize para a versão 10.1A+ Se não estiver criando um novo banco na 10.1B+, atualize definições de schema de segurança $ proutil db –C updateschema OU habilite Auditoria OpenEdge $ prostrct add db audit-areas.st $ proutil db –C enableauditing area data-area-name indexarea index-area-name [disableindexes] 38 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 19 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Segurança na conexão via ABL Opcionalmente bloqueie as conexões dos usuários em branco via menu do Database Administration Admin->Database Options … : Disallow Blank UserID* (*Requer 1 conta _user & -U/-P na conexão) Escolha seu projeto de controle de acesso via ABL • Todas conexões de banco usam o ID do usuário • Aplicação conecta-se ao banco usando – Um único user-id para o banco (1 usuário tem todas as permissões para todas as tabelas) – Uma conta ou grupo de contas (cada user-id da aplicação tem exatamente 1 função) DB-14: OpenEdge Database Run-time Security Revealed 39 © 2007 Progress Software Corporation Ligando R-code para o Banco OpenEdge DBAUTHKEY no caso da segunça em tempo de execução não realizável : Opção de segurança de baixo nível, mas viável para alguns casos Simples chave-secreta • Embutido no banco • Compilado no r-code • Checado pela ABL em tempo de execução Não recomendado onde: • ABL é customizada no site de produção • Banco é usado em múltiplas aplicações • Alteração de aplicação com subconjunto de módulos .r-code 40 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 20 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Duas estratégias de Permissões de Segurança via ABL Escolha com qual sua aplicação se ajusta melhor : Use o padrão de desenvolvimento de aplicação • Nas [schema] tabelas onde dado é PUBLIC • Negue acesso ao usuário para tabelas com dados restritos* • Negue acesso ao usuário em branco para todas as tabelas & campos Admin->Security->Disallow Blank Userid Access … Use modelo recomendado pela indústria - GRANT • Se sua aplicação usa segurança via SQL • Tabelas que contenham acesso restrito tanto a tabela ou a campos • Padrão de acesso a tabela/campo é o administrador de sistema • Adicione (grant) & remova (revoke) contas de usuários seletivos * Prática de segurança não recomendada 41 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Segurança de banco em tempo de execução via ABL Habilitando checar permissão em tempo de execução via ABL : Habilite checagem em tempo de execução via o data administration tool’s dialog Admin->Database Options … Use Runtime Permissions Checking Altere checagem de código de erro na aplicação (se necessário) Dica: use ABL CAN-DO() para testar lista de permissões find _File where _File._File-Name = “Customer”. if CAN-DO(_File._Can-Delete, user_id) then DELETE Customer. 42 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 21 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Controlando a checagem de permissões em tempo de execução Se permissão negada, use evento STOP Feche comando num block com ON STOP DO ON STOP UNDO , LEAVE : FIND customer WHERE CustNum = m_iCustNum NO-ERROR. END. IF ( ERROR-STATUS:ERROR AND INDEX(ERROR-STATUS:GET-MESSAGE(1), “permission denied”) <> 0) THEN RETURN ERROR “Customer table read access denied”. … 43 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Segredos das Permissões via ABL 3 papéis do Administrador de Segurança para vc não esquecer : Um administrador de segurança NÃO tem tratamento especial • Acesso a tabela • Acesso a campo • Concessão/retirada de outros administradores de segurança Cada permissão de campo _Can-* deve ter um dos • Uma conta de Administrador de Segurança • PUBLIC (“*”) 44 Nunca, nunca, nunca deixe uma lista de permissão _Can-* em branco DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 22 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Segredos das Permissões via ABL Papéis da lista de permissões via ABL _Can-* : Ordem dependente, lista dos nomes de contas separada por vírgula (sem espaço em branco!) Adicione nome da conta para concessão de acesso, remova nome da conta para retirar o acesso Use “!” para explicitamente negar acesso para uma conta Use “*” para indicar múltiplas contas de usuários – Acesso PÚBLICO (todas as contas) – Pode usar “xxx_*” ou “*_xxxx” para nome de contas com o mesmo prefixo ou sufixo 45 © 2007 Progress Software Corporation DB-14: OpenEdge Database Run-time Security Revealed Exemplo de Lista de Permissão ABL Nega concessão de acesso ao usuário em branco e para todas as contas Nega usuário em branco & fred, concede acesso para todas as outras contas Concede acesso para usuário em branco e todas as contas Puro modelo GRANT (nega user-id em branco) Concede qualquer conta começando com “dba_” 46 DB-14: OpenEdge Database Run-time Security Revealed “!” Ilegal, ninguém tem acesso!!! “!,!fred,*” Primeiro a lista de usuários negados “*” Equivalente ao acesso PUBLIC do SQL “fred,wilma,MYDBA” Equivalente modelo GRANT do SQL “barney,dba_*, MYDBA” Uso interessante para grupos de contas © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 23 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Combinações de Permissões ABL Pemissões ABL forçadas em baixo nível : FIND, GET, FOR-EACH tipo de comandos • _File._Can-Read EQ, GT, LT, … acesso à campo • _File._Can-Read, _Field._Can-Read CREATE registro • _File._Can-Read, _File._Can-Write, 47 _File._Can-Create, _Field._Can-Write (required fields) ASSIGN registro e valores de campos • _File._Can-Read, _File._Can-Write, DELETE registro • _File._Can-Read, _Field._Can-Write _File._Can-Delete © 2007 Progress Software Corporation DB-14: OpenEdge Database Run-time Security Revealed Mantendo SQL e ABL em Sincrônia Controles de acesso similares para PUB tabelas & colunas : SQL 48 View INSERT SELECT UPDATE DELETE Tabela INSERT SELECT UPDATE DELETE Coluna/campo (view) UPDATE DB-14: OpenEdge Database Run-time Security Revealed ABL N/D _Can-create _Can-read _Can-write _Can-delete _Can-read _Can-write © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 24 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Privilégios & Permissões ADVERTÊNCIA! Cuidado com privilégios e permissões orfãos: Operações de Grant/revoke não checam a presença de nome de contas Privilégios de contas SQL & Permissões ABL não são removidas quando a conta é deletada (incluindo DBA & Administrador de Segurança) • Se uma nova conta for criada com o mesmo nome, ela herdará todos os privilégios & permissões da antiga conta (também pode ser usada como uma ferramenta de recuperação) 49 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Resumindo 50 Maior pressão para incluir segurança de banco em tempo de execução para barrar intrusos torna-se mais sofisticados OpenEdge 10.1+ tem adicionado novas características de segurança OpenEdge 10.1+ RDBMS pode satisfazer suas necessidades de segurança em tempo de execução DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 25 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Para maiores informações, veja … PSDN • OpenEdge SQL Authorization Documentação: • OpenEdge Database Management: Database Administration • OpenEdge Database Management: SQL Reference • OpenEdge Development Collection: Progress 4GL Referenced 51 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Perguntas? 52 DB-14: OpenEdge Database Run-time Security Revealed © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 26 DB-14: OpenEdge Database Run-Time Security Revealed Michael Jacobs Obrigado pelo seu tempo 53 © 2007 Progress Software Corporation DB-14: OpenEdge Database Run-time Security Revealed Bonus ABL Permission List Examples 54 Table “lock-out”, dump & load to recover Deny fred, grant access to all other accounts Grant access to fred and all accounts Pure GRANT model (denies blank user-id) Grant model, deny PUBLIC access “” Grant model, grant blank userid as middle account Grant model, grant blank userid as first account “fred,,wilma,MYDBA” DB-14: OpenEdge Database Run-time Security Revealed “!fred,fred,*” “fred,!fred,*” “fred,wilma,MYDBA” “fred,wilma,MYDBA,!*” “,fred,wilma,MYDBA” © 2007 Progress Software Corporation Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 27