Iniciar teste gratuito
Searching...
SoBrief
Português
EnglishEnglish
EspañolSpanish
简体中文Chinese
繁體中文Chinese (Traditional)
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Building Secure and Reliable Systems

Building Secure and Reliable Systems

Best Practices for Designing, Implementing, and Maintaining Systems
por Heather Adkins 2020 541 páginas
3.89
199 avaliações
Ouvir
Experimente o Acesso Completo por 3 Dias
Desbloqueie o áudio e muito mais!
Continuar

Principais Lições

1. Frameworks garantem segurança e confiabilidade em todas as aplicações

Frameworks permitem reutilizar código: em vez de se preocupar com todos os aspetos de segurança e confiabilidade de uma funcionalidade, os programadores só precisam de personalizar um bloco específico.

Proteção padronizada. Os frameworks oferecem uma abordagem consistente para resolver problemas comuns de segurança e confiabilidade em várias aplicações. Ao centralizar funções críticas como autenticação, autorização e tratamento de erros, os frameworks reduzem a probabilidade de vulnerabilidades causadas por implementações inconsistentes. Assim, especialistas na área podem criar blocos seguros que beneficiam todas as equipas que usam o framework.

Produtividade aumentada. Utilizar frameworks eleva a produtividade dos programadores, pois estes podem concentrar-se na lógica do negócio em vez de reinventar funcionalidades de segurança e confiabilidade. Muitos frameworks já trazem ferramentas integradas para monitorização, registo e otimização de desempenho, simplificando ainda mais o desenvolvimento. Esta padronização facilita também a análise da segurança e confiabilidade do código, uma vez que os padrões comuns são aplicados de forma uniforme nos projetos.

2. A simplicidade no design do código melhora a segurança e a manutenção

Evitar código YAGNI (You Aren’t Gonna Need It) aumenta a fiabilidade, e código mais simples reduz bugs de segurança, minimiza erros e diminui o tempo gasto a manter código desnecessário.

Redução da complexidade. Código simples é mais fácil de compreender, rever e manter. Seguindo princípios como o YAGNI e evitando sobreengenharia, os programadores criam sistemas mais robustos e seguros. Código simples tem menos pontos de falha e é menos propenso a conter vulnerabilidades ocultas.

Melhoria da manutenção. Refatorações regulares e o tratamento da dívida técnica são essenciais para manter a simplicidade do código ao longo do tempo. Este processo contínuo evita o acúmulo de código complexo e difícil de entender, que pode causar problemas de segurança e confiabilidade. Ferramentas como linters e métricas de saúde do código ajudam as equipas a identificar áreas a melhorar e a manter elevados padrões de qualidade.

3. Tipagem forte e sanitização previnem vulnerabilidades comuns

Usar tipos fortes protege o código de erros que o compilador não detecta.

Segurança de tipos. A tipagem forte permite apanhar erros em tempo de compilação, evitando muitas vulnerabilidades antes que o código chegue à produção. Ao usar tipos específicos para diferentes contextos (por exemplo, SafeHtml para conteúdo HTML, SafeUrl para URLs), os programadores garantem propriedades de segurança desde o início. Esta abordagem dificulta a introdução de vulnerabilidades como injeção SQL ou cross-site scripting (XSS).

Validação de entradas. A sanitização adequada das entradas é fundamental para prevenir vulnerabilidades. Utilizando bibliotecas e frameworks dedicados ao tratamento de dados do utilizador, os programadores asseguram que toda a informação é validada e limpa antes de ser usada em operações sensíveis. Isto inclui:

  • Escapar caracteres especiais em conteúdos gerados pelo utilizador
  • Validar e sanitizar URLs e caminhos de ficheiros
  • Aplicar verificação rigorosa de tipos para todas as entradas

4. Testes unitários verificam o comportamento de componentes individuais

Os testes unitários correm normalmente localmente como parte do fluxo de trabalho dos programadores, fornecendo feedback rápido antes de submeterem alterações ao código.

Verificação detalhada. Os testes unitários focam-se em validar o comportamento de componentes isolados. Esta abordagem permite detetar bugs cedo e garante que cada componente funciona corretamente antes da integração. Boas práticas incluem:

  • Escrever testes antes ou em paralelo com o código (Desenvolvimento Orientado a Testes)
  • Cobrir casos normais e extremos
  • Usar mocks e stubs para isolar dependências

Feedback contínuo. Integrar testes unitários no fluxo de desenvolvimento ajuda a identificar regressões e efeitos colaterais rapidamente. Este ciclo de feedback contínuo mantém a qualidade do código e evita a introdução de novos bugs. Pipelines automáticos de CI/CD podem executar testes unitários a cada alteração, fornecendo retorno imediato aos programadores.

5. Testes de integração avaliam as interações em todo o sistema

Os testes de integração vão além das unidades individuais, substituindo implementações falsas ou simuladas de abstrações como bases de dados ou serviços de rede por implementações reais.

Verificação ao nível do sistema. Os testes de integração avaliam como os diferentes componentes funcionam em conjunto, revelando problemas que não aparecem em testes isolados. Estes testes garantem que o sistema funciona corretamente como um todo, incluindo interações com dependências externas como bases de dados e APIs. Pontos importantes incluem:

  • Configurar ambientes de teste realistas
  • Gerir dados de teste de forma segura
  • Lidar com operações assíncronas e questões de temporização

Equilíbrio entre cobertura e velocidade. Embora os testes de integração sejam valiosos para entender o comportamento do sistema, são geralmente mais lentos e exigem mais recursos que os testes unitários. As equipas devem encontrar um equilíbrio entre cobertura abrangente e ciclos de feedback rápidos. Estratégias como testes de integração seletivos baseados em avaliação de risco ajudam a otimizar a cobertura sem sacrificar a velocidade de desenvolvimento.

6. Ferramentas de análise dinâmica detetam erros e vulnerabilidades em tempo de execução

A análise dinâmica executa programas, por vezes em ambientes virtualizados ou emulados, para além do simples teste.

Deteção de erros em tempo de execução. Ferramentas de análise dinâmica, como sanitizadores, identificam erros e vulnerabilidades que podem passar despercebidos na análise estática ou em testes convencionais. Estas ferramentas instrumentam o código durante a compilação para adicionar verificações em tempo de execução, detetando problemas como:

  • Fugas de memória e estouros de buffer
  • Erros de uso após libertação de memória
  • Condições de corrida e deadlocks
  • Comportamento indefinido

Considerações de desempenho. Embora forneçam informações valiosas, estas ferramentas podem impactar significativamente o desempenho. Por isso, são normalmente usadas em builds noturnos ou pipelines de teste dedicados, equilibrando a necessidade de análise detalhada com a velocidade do desenvolvimento. Os dados obtidos ajudam a priorizar correções e a melhorar a qualidade geral do código.

7. Testes de fuzz descobrem casos extremos e entradas inesperadas

O fuzzing é útil para testar a resiliência de serviços.

Geração automática de entradas. O fuzz testing gera grandes quantidades de entradas aleatórias ou semi-aleatórias para encontrar bugs e vulnerabilidades. Esta técnica é eficaz para identificar casos extremos e comportamentos inesperados que os testes manuais podem não detectar. O fuzzing ajuda a descobrir:

  • Problemas de corrupção de memória
  • Falhas na validação de entradas
  • Vulnerabilidades de negação de serviço
  • Erros de parsing em formatos de ficheiros ou protocolos de rede

Fuzzing contínuo. Integrar o fuzz testing em pipelines de integração contínua permite às equipas testar constantemente os seus sistemas em busca de novas vulnerabilidades. À medida que o código evolui, o fuzzing pode revelar regressões ou problemas introduzidos por alterações. Ferramentas como libFuzzer e AFL facilitam a implementação do fuzz testing em vários tipos de software.

8. Validação contínua assegura resiliência constante do sistema

Suites de testes bem desenhadas avaliam a correção de diferentes implementações que realizam a mesma tarefa.

Resiliência proativa. A validação contínua vai além dos testes tradicionais, exercitando o sistema sob várias condições. Esta abordagem garante que o sistema se mantém resiliente a falhas e ataques ao longo do tempo. Técnicas de validação contínua incluem:

  • Experiências de engenharia do caos
  • Simulações regulares de recuperação de desastres
  • Scans automáticos de segurança e testes de penetração
  • Testes de stress de desempenho sob cargas realistas

Modelos de ameaça em evolução. À medida que os sistemas crescem e mudam, surgem novas vulnerabilidades e modos de falha. A validação contínua ajuda as equipas a antecipar estes desafios, reavaliando regularmente a resiliência dos seus sistemas. Este processo deve incluir a atualização dos modelos de ameaça, revisão dos cenários de teste e incorporação das lições aprendidas em incidentes reais e quase acidentes.

Última atualização:

Report Issue

Resumo das Resenhas

3.89 de 5
Média de 199 avaliações do Goodreads e Amazon.

Construindo Sistemas Seguros e Confiáveis recebe avaliações mistas, com uma média de 3,90 em 5. Os leitores valorizam sua abordagem abrangente sobre os princípios de segurança e confiabilidade, especialmente para grandes organizações. Muitos consideram o livro útil tanto para treinamento quanto como guia de referência. No entanto, há críticas quanto à sua estrutura, à verbosidade e, por vezes, à falta de clareza. O livro é elogiado por integrar conceitos de segurança e confiabilidade, embora seja apontado como muito centrado no Google. Enquanto alguns capítulos são vistos como excessivamente teóricos ou detalhados, outros se destacam pela praticidade. De modo geral, é recomendado para profissionais de segurança e engenheiros de confiabilidade de sites (SREs).

Your rating:
4.38
273 avaliações
Want to read the full book?

Perguntas Frequentes

What's Building Secure and Reliable Systems about?

  • Focus on Integration: The book emphasizes integrating security and reliability into the entire lifecycle of system design, implementation, and maintenance.
  • Practical Guidance: It offers practical advice and best practices for organizations of all sizes, from startups to large enterprises.
  • Cultural Aspects: The authors discuss the importance of fostering a culture of security and reliability within organizations.

Why should I read Building Secure and Reliable Systems?

  • Comprehensive Resource: It serves as a guide for professionals involved in system design and operations, offering insights from experienced practitioners at Google.
  • Real-World Examples: The book shares case studies and examples, making the concepts relatable and applicable to various organizational contexts.
  • Improving Practices: Readers can learn how to improve their organization's security posture and reliability practices.

What are the key takeaways of Building Secure and Reliable Systems?

  • Integration of Principles: Security and reliability should be integrated into every stage of the system lifecycle.
  • Crisis Management: Effective crisis management strategies, including incident response planning, are outlined.
  • Cultural Importance: A culture that prioritizes security and reliability is essential for resilient systems.

What are the best quotes from Building Secure and Reliable Systems and what do they mean?

  • "Security and reliability are inherent properties of a system.": These aspects should be integrated from the beginning.
  • "A culture of inevitability can help teams have the appropriate frame of mind to build secure and reliable systems.": Accepting that failures can happen leads to better resilience.
  • "Everyone is responsible for security and reliability.": Security and reliability should be a collective effort across the organization.

What is the principle of least privilege in Building Secure and Reliable Systems?

  • Definition: Users should have the minimum access necessary to accomplish their tasks.
  • Reducing Risk: Limiting access minimizes the potential for mistakes or malicious actions.
  • Implementation Strategies: Strategies include using small functional APIs and advanced authorization controls.

How does Building Secure and Reliable Systems define adversaries?

  • Understanding Adversaries: Adversaries are individuals or groups that may exploit system vulnerabilities.
  • Motivations: Motivations include financial gain, activism, and espionage.
  • Frameworks for Analysis: The book provides frameworks for analyzing adversaries, aiding in designing resilient systems.

What role does culture play in security and reliability according to Building Secure and Reliable Systems?

  • Cultural Shift: Building a culture of security and reliability is essential for long-term success.
  • Empowerment and Training: Training employees and empowering them to take ownership of security practices is crucial.
  • Collaboration and Communication: Open communication and collaboration help identify potential issues early.

What is the role of the incident commander (IC) in crisis management as described in Building Secure and Reliable Systems?

  • Leadership During Incidents: The IC leads the incident response team and makes critical decisions.
  • Maintaining Morale: The IC focuses on maintaining team morale during high-pressure situations.
  • Handover Processes: The IC manages handovers between shifts to ensure continuity.

How does Building Secure and Reliable Systems address the trade-offs between security and reliability?

  • Balancing Act: Decisions in one area can impact the other, requiring careful consideration.
  • Design Considerations: Designers should ensure security measures do not compromise reliability.
  • Real-World Examples: Examples show how organizations navigate these trade-offs effectively.

What are some best practices for designing secure systems in Building Secure and Reliable Systems?

  • Design for Understandability: Systems should be understandable to aid in security and reliability.
  • Use of Proxies: Safe proxies manage access and enforce security policies.
  • Continuous Improvement: Regularly review and update security practices based on new insights.

What are the advanced mitigation strategies discussed in Building Secure and Reliable Systems?

  • Defense in Depth: Implement multiple defensive measures to protect systems.
  • Automated Response Mechanisms: Use automated systems for quick incident response.
  • Regular Testing and Updates: Continuously test and update security measures to adapt to threats.

How does Building Secure and Reliable Systems suggest handling legacy code?

  • Consolidate Exemption Mechanisms: Simplify the codebase to reduce vulnerabilities.
  • Refactor Regularly: Improve security and reliability through regular refactoring.
  • Avoid Overengineering: Promote the YAGNI principle to keep the codebase manageable.

Sobre o Autor

Heather Adkins é uma profissional de destaque na área da cibersegurança e tecnologia da informação. Como autora, tem contribuído de forma significativa para a literatura sobre sistemas seguros e fiáveis, baseando-se na sua vasta experiência no setor. Adkins é reconhecida pelo seu trabalho na Google, onde desempenhou um papel fundamental no desenvolvimento e implementação de práticas de segurança. A sua especialização abrange áreas como gestão de riscos, resposta a incidentes e engenharia de segurança. Através dos seus escritos, Adkins procura partilhar as melhores práticas e conhecimentos adquiridos ao trabalhar em ambientes tecnológicos de grande escala, ajudando outras organizações a melhorar as suas estratégias de segurança e fiabilidade.

Follow
Ouvir
Now playing
Building Secure and Reliable Systems
0:00
-0:00
Now playing
Building Secure and Reliable Systems
0:00
-0:00
1x
Queue
Home
Swipe
Library
Get App
Try Full Access for 3 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
Read unlimited summaries. Free users get 3 per month
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 4
📜 Unlimited History
Free users are limited to 4
📥 Unlimited Downloads
Free users are limited to 1
Risk-Free Timeline
Hoje: Acesso Imediato
Ouça resumos completos de mais de 26.000 livros. São mais de 12.000 horas de áudio!
Dia 2: Lembrete do Teste
Enviaremos uma notificação avisando que seu teste está acabando.
Dia 3: Sua assinatura começa
A cobrança será feita em Jun 13,
cancele a qualquer momento antes.
Consume 2.8× More Books
2.8× more books Listening Reading
Our users love us
600,000+ readers
Trustpilot Rating
TrustPilot
4.6 Excellent
This site is a total game-changer. I've been flying through book summaries like never before. Highly, highly recommend.
— Dave G
Worth my money and time, and really well made. I've never seen this quality of summaries on other websites. Very helpful!
— Em
Highly recommended!! Fantastic service. Perfect for those that want a little more than a teaser but not all the intricate details of a full audio book.
— Greg M
Save 62%
Yearly
$119.88 $44.99/year/yr
$3.75/mo
Monthly
$9.99/mo
Start a 3-Day Free Trial
3 days free, then $44.99/year. Cancel anytime.
Unlock a world of fiction & nonfiction books
26,000+ books for the price of 2 books
Read any book in 10 minutes
Discover new books like Tinder
Request any book if it's not summarized
Read more books than anyone you know
#1 app for book lovers
Lifelike & immersive summaries
30-day money-back guarantee
Download summaries in EPUBs or PDFs
Cancel anytime in a few clicks
Scanner
Find a barcode to scan

We have a special gift for you
Open
38% OFF
DISCOUNT FOR YOU
$79.99
$49.99/year
only $4.16 per month
Continue
2 taps to start, super easy to cancel
Settings
General
Widget
Loading...
We have a special gift for you
Open
38% OFF
DISCOUNT FOR YOU
$79.99
$49.99/year
only $4.16 per month
Continue
2 taps to start, super easy to cancel