Revelada a Segurança de Tempo de Execução da Base de Dados

Propaganda
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
Download