PostgreSQL, o Elefante Encouraçado

  • View
    2.448

  • Download
    3

Embed Size (px)

DESCRIPTION

Palestra sobre segurança no PostgreSQL realizada no PGCon Brasil 2008 em setembro de 2008

Text of PostgreSQL, o Elefante Encouraçado

  • 1. PostgreSQL O Elefante Encouraadopor Fbio Telles 26 de Setembro de 2008

2. Segurana? Indisponibilidadedosdados; Incapacidadedeserecuperardedesastres; Acessonoautorizado; Alteraonoautorizadaoucorrompimentodos dados; Anonimatonastransaes,fraudes,etc; por Fbio Telles 26 de Setembro de 2008 3. Linha do Tempo 1941Z3naAlemanha 1943ColossusnaInglaterra 1944HarvardMark1nosUSA 1945ENIACnosUSA 1951FerrantiMark1 1951WhirlwindnosUSApor Fbio Telles26 de Setembro de 2008 4. Segurana Nacional Oscomputadoresnascemcomoparte deumesforodeguerra; Aseguranaeinformaosovalores inseparveisnainformtica;por Fbio Telles 26 de Setembro de 2008 5. 50's Umatarefaporvez; Baixopoderde processamento; Poucamemria; Clculoscientficos; por Fbio Telles 26 de Setembro de 2008 6. 60's e 70's Timesharing:umcomputador/ vriosusuriosviaterminalburro; AutenticaodeusuriosnoSO; Primeirasredes; Memriamagntica; Primeirosbancosdedados;por Fbio Telles26 de Setembro de 2008 7. 80's Microcomputadores; Primeirosbancosdedadospessoais; Disquetesediscosrgidos; Usenet,BBS,modems; DPLDPC; por Fbio Telles 26 de Setembro de 2008 8. 90's Cliente/Servidor; ServiosdeDiretrio(LDAP); EtherneteInternet; RAIDeSCSI; Bancosdedadosrelacionais; por Fbio Telles 26 de Setembro de 2008 9. Hoje Sistemasem3oumaiscamadas; Virtualizao; Memriasdeestadoslido; Wireless; BI;por Fbio Telles26 de Setembro de 2008 10. Preocupao com segurana hoje SarbanesOxleyAct; ITIL(ISO20000); COBIT; ISO27000; por Fbio Telles 26 de Setembro de 2008 11. Alta Disponibilidade Antesdequalquercoisa: Bomfornecimentodeenergia: Instalaoeltricadedicadaebalanceada; Nobreaksredundantescomcargacompatvelebaterianovencida; Geradorescomcargacompatvelecontratodemanuteno; Bomacondicionamento: Arcondicionadosuficienteeredundante; Boaacomodao(racks),bonsgabinetes; Seguranacontraincndioedesastresnaturais; Equipe: Monitoramentoconstantedossistemas; Equipedisponvelnoshorriosdeoperao;por Fbio Telles26 de Setembro de 2008 12. Alta Disponibilidade Agorafalandoemservidores: Equipamentosde1linha,c/3oumaisanosde garantiaonsiteetempoderespostabom; Fontes,ventoinhas,discosredundanteseHot Swap; RAID10>RAID0+1>RAID6>RAID5>s/ RAID>RAID0; FibreChannel>iSCSI; Terpeassobressalentes,HdsHotSpare, Servidordebackup,sitebackup,etc.por Fbio Telles26 de Setembro de 2008 13. Alta DisponibilidadeAgorafalandodeBancosdeDados: Clustersharednothing; Clustersharedall; Replicaosncrona/assncrona; Replicaomultimaster/masterslave; Failover;por Fbio Telles26 de Setembro de 2008 14. Alta Disponibilidade AgorafalandoemPostgreSQL: PL/Proxy(clustersharednothing); PGClusterII(clustersharedall); Standby(replicaomasterslaveassncrona); SlonyI(replicaomasterslaveassncrona); PGCluster(replicaomultimastersncrona); PGPool(failover+replicao); DRDB(replicaodesistemadearquivos); HeartBeat+discoscompartilhados(failover)por Fbio Telles 26 de Setembro de 2008 15. Backup Backuplgico; Backupfsicooffline; Backupfsicoonline; Snapshot;por Fbio Telles26 de Setembro de 2008 16. Backup Lgico timoparaauditoriasfuturas; timoparamoverdados; timoparaalteraesestruturais; Muitoflexvel; Ocupapoucoespao(noincluindices); Altotempopararecuperao(criaode ndiceserestries); Usodopg_dump,pg_restoreepsql;por Fbio Telles26 de Setembro de 2008 17. Backup Fsico off-line Exigeindisponibilidadedobancodedados; Volumoso(exigeacpiadetodoocluster); Poucoflexvel(nopermiteedies); Recuperaorpida; UsodeferramentasdecpiadearquivosdoSO;por Fbio Telles26 de Setembro de 2008 18. Backup Fsico on-line Noexigeindisponibilidadedobancodedados; Maisvolumosoainda(exigeacpiadetodooclustereos logsdoWAL); Umpoucomaisflexvel(permitePITR); Recuperaoumpoucomenosrpida(exigerecuperao doslogsdoWAL); Umpoucomaiscomplexo: UsodeferramentasdecpiadearquivosdoSO; UsodoBEGINBACKUPeENDBAKCUP; UsodearquivamentodelogsdoWAL.por Fbio Telles26 de Setembro de 2008 19. Stand By =Backupofflinedobanco+enviodelogsdoWAL TiposdeStandBy: Cold:LogssoaplicadosapenasquandooStand Byativado; Warm:Logssoaplicadoscontinuamente,maso StandBypermaneceemestadoindisponvel; Hot:LogssoaplicadoscontinuamentenoStand Byqueficadisponvelparaconsultas;por Fbio Telles 26 de Setembro de 2008 20. Stand By Pontoscrticos: Estabilidadedaconexoentreosservidores; PerodomximoentreosarquivamentosdoWAL(archive_timeout); TamanhodoslogsdoWAL(definidonacompilao); Volumedetransaes. Vantagens: Baixoimpactonodesempenho; PermiteposicionaroStandByalongasdistncias; Estabilidadeesimplicidade; reasofrendocontnuosmelhoramentosnoPostgreSQL por Fbio Telles26 de Setembro de 2008 21. Stand ByDesvantagens: Areplicaosempreseaplicaatodoocluster; HotStandByaindaestemdesenvolvimento; HojeoStandByassncrono:alteraes realizadasantesdoltimoarquivamentodo WALsoperdidos; Replicaosncronaemdesenvolvimento; Propagaerrosdosusurios; Nosubstituipolticadebackup; por Fbio Telles 26 de Setembro de 2008 22. Melhorando a disponibilidade CriepartiesseparadasparaoSO,LogsdoSOePostgreSQL, WAL,tablespaces,etc; Separearquivosdecontrole,configuraoeWALemdiscos distintosdostablespaces; Chequecomfrequnciaosseuslogs; Monitoreocomportamentodoseuservidor; Faabackupdosarquivosdeconfigurao(postgresql.confe pghba.conf); Documenteprocedimentosdebakcuperecover; Testevriasvezesosprocedimentos; Faaumtestederestorecompletodosbackupsperiodicamente.por Fbio Telles 26 de Setembro de 2008 23. Autenticando Aplicaes no PostgreSQL AutenticaoInterna:umusuriodoPostgreSQL porusuriodaAplicao; AutenticaoExterna:umusuriodoPostgreSQL porusuriodaAplicaocomautenticaoexterna (LDAP,AD,Kerberos,etc); AutenticaoviaAplicao:umusuriodo PostgreSQLparatodosusuriosdaaplicao;por Fbio Telles26 de Setembro de 2008 24. Autenticao Interna Auditoriaconsistente; SempreuseROLEsparaagruparprivilgiosemobjetos; DBAprecisacriarusuriosnobancodedadosmanualmente, inclusiveasenhainicial; Aplicaodevetrocarsenhadousurionaprimeiravezem queeleseconectar; Umusurioesenhapodeserutilizadoemvriasaplicaesno mesmocluster; SeaaplicaoforCliente/Servidor,PostgreSQLno consegueimpedirousuriodeseconectarporforada aplicao(psqlououtros);por Fbio Telles26 de Setembro de 2008 25. Autenticao ExternaTemasmesmascaractersticasdaAutenticaoInternacomasseguintesdiferenas: AdministraodesenhasficaacargodoAdministradordeSistemas; Seintegracomosdemaisusuriosdarede; Umusurioesenhapodeserutilizadoparatodasaplicaes,loginnoSO,email,etc; maiscomplexoparaserconfigurado;por Fbio Telles26 de Setembro de 2008 26. Autenticao pela Aplicao Auditoriadeveserimplementadapelaaplicao; Cadastrodeusurios,senhasepermissesdeinteira responsabilidadedaaplicao; SenhadeacessoaoPostgreSQLdeveficardentrodaaplicao; OROLEdaaplicaonuncapodesermesmoqueoROLEdo desenvolvedorouodonodosobjetosdaaplicao; por Fbio Telles26 de Setembro de 2008 27. GRANT e REVOKE Paracadaaplicaocrieusurios(autenticaopelaaplicao) ougruposdeusurios(autenticaointernaouexterna)como mnimodeprivilgiosparaosseguintesperfis: DBAs; Desenvolvedores; Usuriosdaaplicao; Usuriosadministrativosdaaplicao; Usuriosespeciais;por Fbio Telles26 de Setembro de 2008 28. pg_hba.conf UseIDENTapenasparaconexeslocais; UseTRUSTapenasparasistemasmonousurios; NousePASSWORDouCRYPT; LimiteafaixadeIPsaplicaescliente/servidor; LimiteoIPdo(s)servidor(es)deaplicaoemaplicaes deNcamadas; Probaconexesremotas(local)seoservidordeaplicao ficarjuntodoservidordebancodedados; por Fbio Telles 26 de Setembro de 2008 29. pg_hba.conf Autenticaointernaouexternadevelimitarosgruposde usurios(ROLEs)utilizadosporaplicao; Autenticaoviaaplicaodevemlimitaraosusurios individuaisutilizadospelaaplicao; Aautenticaoexternanoprotegeosdados,apenasa autenticao; UseSSL(hostssl)paracriptografaroenviodedados sensveisemambienteclient/server: NuncauseALL,anoserparaoREJECT. por Fbio Telles 26 de Setembro de 2008 30. Controle avanado: vises OPostgreSQLnotemGRANTeREVOKEnonvelde colunas....eseriamuitochatousarisso! Crievisescontendoapenasoscamposqueousuriodaaplicaodeveacessar; Depermissoparaousurioacessaraviso; Revogueapermissodousurioparaacessaratabeladeorigem;por Fbio Telles 26 de Setembro de 2008 31. Controle avanado: funesVocpodelimitaroacessoaregistrosdeumatabelafazendo comqueumafunoretorneapenasaslinhasqueousurio teriapermisso: Funodetectaqualusurioestconectadonasessoe utilizaonomedousuriocomoparmetronumaclusula WHERE Vocpodeencapsularvriasetapasdeumatransaoem umafunoquerecebeparmetros: FunofazasoperaesdeUPDATE,INSERTe DELETEsemousurioterpermissesdiretasnastabelas;por Fbio Telles26 de Setembro de 2008 32. Aumentando a segurana Utilizarnomnimoumtablespaceparandiceseumpara tabelas; Utilizeumesquemaseparadoporaplicao; Noutilizeoesquemapublicanoserqueosdadoslsejam realmentepblicos; ApliqueascorreesdeseguranadoseuSO,doPostgreSQLe demaisaplicaescomfreqncia; UseasferramentasdecriptografiadoPostgreSQLnocontrib; Sepreocupecomaseguranaalmdobancodedados: aplicao,usurios,email,documentosimpressossoos melhoresalvosparaataquesinternoseexternos. por Fbio Telles 26 de Setembro de 2008 33. SE PostgreSQL SrodaemLinux Realizaocontroledeacessononveldosarquivosde dados; Exigemaistrabalhonaimplementao; Dependedacriaodecontextosparaosdados; Muitoflexvel: Permitecriarcontextopararegistrosespecficos; Permitecriarcontextoparacamposespecficos; PermiteacriaodecontextosusandoSQL;por Fbio Telles26 de Setembro de 2008 34. Boa Modelagem = Dados Saudaveis Vocconheceumbommotivoparanousarchavesprimarias? Usetodasasrestriesnaturaisdobancoexaustivamente:PK, FK,UK,CHECK; UseDOMAINs Usevalorespadro; NormalizeabaseeentendadefinitivamentecomooNULL funciona; Setiverqueusarchavesartificiais,usesequncias; Usegatilhosefunesparaimporrestriesdenegcio avanadas; Comentriosedocumentaonuncasodemais; por Fbio Telles26 de Setembro de 2008 35. Segurana na aplicao UsetransaesexplcitascomBEGIN,COMMITe ROLLBACK; UseDollarQuoting($$).Senousar,escapeasaspassimples; Usedesconexoautomticaporociosidade; Usedetratamentodeerrosespecialparaerrosdeviolaode restriesdeintegridade; Nuncausarodonodosobjetospara