SEC02-BP03 보안 암호 저장 및 사용 - AWS Well-Architected 프레임워크

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

SEC02-BP03 보안 암호 저장 및 사용

워크로드에는 데이터베이스, 리소스 및 서드파티 서비스에 대한 자격 증명을 증명하는 자동화된 기능이 필요합니다. 이는 액세스 키, 암호 및 OAuth 토큰과 같은 보안 API 액세스 자격 증명을 사용하여 수행됩니다. 특별 제작된 서비스를 사용하여 이러한 자격 증명을 저장, 관리 및 교체하면 해당 자격 증명이 손상될 가능성을 줄이는 데 도움이 됩니다.

원하는 성과: 다음 목표를 달성하는 애플리케이션 자격 증명을 안전하게 관리하기 위한 메커니즘을 구현합니다.

  • 워크로드에 필요한 보안 암호를 식별합니다.

  • 가능한 경우 장기 자격 증명을 단기 자격 증명으로 대체하여 필요한 장기 자격 증명의 수를 줄입니다.

  • 나머지 장기 자격 증명의 안전한 저장 및 자동 교체를 설정합니다.

  • 워크로드에 존재하는 보안 암호에 대한 액세스 권한을 감사합니다.

  • 개발 프로세스 중에 소스 코드에 보안 암호가 포함되어 있지 않은지 확인하기 위해 지속적으로 모니터링합니다.

  • 자격 증명이 의도치 않게 공개될 가능성을 줄입니다.

일반적인 안티 패턴:

  • 자격 증명을 교체하지 않습니다.

  • 소스 코드 또는 구성 파일에 장기 자격 증명을 저장합니다.

  • 자격 증명을 저장 시 암호화되지 않은 상태로 저장합니다.

이 모범 사례 확립의 이점:

  • 보안 암호는 저장 시 및 전송 중 암호화된 상태로 저장됩니다.

  • 자격 증명에 대한 액세스는 API (자격 증명 자동 판매기라고 생각)를 통해 동기됩니다.

  • 자격 증명에 대한 액세스 권한(읽기 및 쓰기 모두)은 감사되고 로깅됩니다.

  • 우려 사항 분리: 자격 증명 교체는 아키텍처의 나머지 부분과 분리될 수 있는 별도의 구성 요소에 의해 수행됩니다.

  • 보안 암호는 필요에 따라 소프트웨어 구성 요소에 자동으로 배포되며 중앙 위치에서 교체가 수행됩니다.

  • 자격 증명에 대한 액세스 권한은 세분화된 방식으로 제어할 수 있습니다.

이 모범 사례가 확립되지 않을 경우 노출되는 위험 수준: 높음

구현 가이드

과거에는 데이터베이스, 타사 , APIs토큰 및 기타 보안 암호에 인증하는 데 사용되는 보안 인증 정보가 소스 코드 또는 환경 파일에 내장되었을 수 있습니다. 는 이러한 보안 인증을 안전하게 저장하고 자동으로 교체하며 사용량을 감사하는 여러 메커니즘을 AWS 제공합니다.

보안 암호 관리에 접근하는 가장 좋은 방법은 제거, 대체 및 교체 지침을 따르는 것입니다. 가장 안전한 자격 증명은 저장, 관리 또는 처리할 필요가 없는 자격 증명입니다. 안전하게 제거할 수 있는 워크로드 기능에 더 이상 필요하지 않은 자격 증명이 있을 수 있습니다.

워크로드의 적절한 기능을 위해 여전히 필요한 자격 증명의 경우 장기 자격 증명을 임시 또는 단기 자격 증명으로 대체할 기회가 있을 수 있습니다. 예를 들어 보안 AWS 암호 액세스 키를 하드 코딩하는 대신 IAM 역할을 사용하여 해당 장기 보안 인증을 임시 보안 인증으로 대체하는 것이 좋습니다.

일부 장기 보안 암호는 제거하거나 대체하지 못할 수 있습니다. 이러한 보안 암호는 AWS Secrets Manager와 같은 서비스에 저장될 수 있습니다. 이를 통해 중앙에서 저장 및 관리되고 정기적으로 교체될 수 있습니다.

워크로드의 소스 코드 및 구성 파일을 감사하면 여러 유형의 자격 증명을 확인할 수 있습니다. 다음 표에는 일반적인 유형의 자격 증명을 처리하기 위한 전략이 요약되어 있습니다.

자격 증명 유형 설명 제안된 전략
IAM 액세스 키 AWS IAM 워크로드 내에서 IAM 역할을 수임하는 데 사용되는 액세스 및 보안 키 바꾸기: 대신 컴퓨팅 인스턴스(예: Amazon EC2 또는 AWS Lambda)에 할당된 IAM 역할을 사용합니다. 의 리소스에 액세스해야 하는 타사와의 상호 운용성을 위해 AWS 교차 계정 액세스 를 지원하는지 AWS 계정문의하세요. 모바일 앱의 경우 Amazon Cognito 자격 증명 풀(페더레이션 자격 증명)을 통한 임시 자격 증명 사용을 고려하세요. 외부에서 실행되는 워크로드의 경우 IAM Roles Anywhere 또는 AWS Systems Manager Hybrid Activations를 AWS고려합니다.
SSH 키 수동으로 또는 자동화된 프로세스의 일부로 Linux EC2 인스턴스에 로그인하는 데 사용되는 Secure Shell 프라이빗 키 바꾸기: AWS Systems Manager 또는 EC2 Instance Connect를 사용하여 IAM 역할을 사용하는 EC2 인스턴스에 대한 프로그래밍 방식 및 인적 액세스를 제공합니다.
애플리케이션 및 데이터베이스 자격 증명 암호 - 일반 텍스트 문자열 교체: AWS Secrets Manager에 자격 증명을 저장하고 가능하면 자동 교체를 설정합니다.
Amazon RDS 및 Aurora 관리 데이터베이스 보안 인증 정보 암호 - 일반 텍스트 문자열 바꾸기: Secrets Manager와 Amazon 또는 Amazon Aurora의 통합RDS을 사용합니다. https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html 또한 일부 RDS 데이터베이스 유형은 일부 사용 사례에 암호 대신 IAM 역할을 사용할 수 있습니다(자세한 내용은 IAM 데이터베이스 인증 참조).
OAuth 토큰 보안 암호 토큰 - 일반 텍스트 문자열 교체: AWS Secrets Manager에 토큰을 저장하고 자동 교체를 구성합니다.
API 토큰 및 키 보안 암호 토큰 - 일반 텍스트 문자열 교체: AWS Secrets Manager에 저장하고 가능하면 자동 교체를 설정합니다.

일반적인 안티 패턴은 소스 코드, 구성 파일 또는 모바일 앱 내에 IAM 액세스 키를 내장하는 것입니다. AWS 서비스와 통신하는 데 IAM 액세스 키가 필요한 경우 임시(단기) 보안 자격 증명 을 사용합니다. 이러한 단기 자격 증명은 인스턴스에 IAM 대한 역할EC2, Lambda 함수에 대한 실행 역할, 모바일 사용자 액세스를 위한 Cognito IAM 역할IoT 디바이스에 대한 IoT Core 정책을 통해 제공될 수 있습니다. IoT 타사와 상호 작용할 때는 IAM 사용자를 구성하고 해당 사용자의 보안 액세스 키를 타사에 보내는 대신 계정 리소스에 필요한 액세스 권한이 있는 IAM 역할에 대한 액세스를 위임하는 것이 좋습니다.

워크로드에 다른 서비스 및 리소스와 상호 운용하는 데 필요한 보안 암호의 스토리지가 필요한 경우가 많습니다. AWS Secrets Manager는 이러한 보안 인증을 안전하게 관리하기 위해 구축된 것뿐만 아니라 API 토큰, 암호 및 기타 보안 인증 정보의 스토리지, 사용 및 교체를 목적으로 합니다.

AWS Secrets Manager 는 민감한 보안 인증 정보의 안전한 저장 및 처리를 보장하기 위한 5가지 주요 기능을 제공합니다. 즉, 저장 시 암호화, 전송 중 암호화, 포괄적인 감사, 세분화된 액세스 제어확장 가능한 보안 인증 정보 교체입니다. AWS 파트너의 기타 보안 암호 관리 서비스 또는 유사한 기능과 보증을 제공하는 현지 개발 솔루션도 허용됩니다.

구현 단계

  1. Amazon CodeGuru과 같은 자동 도구를 사용하여 하드 코딩된 보안 인증 정보가 포함된 코드 경로를 식별합니다.

    1. Amazon CodeGuru 을 사용하여 코드 리포지토리를 스캔합니다. 검토가 완료되면 Type=Secrets 에서 필터링 CodeGuru 하여 문제가 있는 코드 라인을 찾습니다.

  2. 제거하거나 대체할 수 있는 자격 증명을 식별합니다.

    1. 더 이상 필요하지 않은 자격 증명을 식별하고 제거하도록 표시합니다.

    2. 소스 코드에 포함된 AWS 보안 암호 키의 경우 필요한 리소스와 연결된 IAM 역할로 바꿉니다. 워크로드의 일부가 외부에AWS 있지만 AWS 리소스에 액세스하려면 IAM 자격 증명이 필요한 경우 IAM Roles Anywhere 또는 AWS Systems Manager Hybrid Activations를 고려하세요.

  3. 교체 전략을 사용해야 하는 서드파티의 장기 보안 암호의 경우 Secrets Manager를 코드에 통합하여 런타임 시 서드파티 보안 암호를 검색합니다.

    1. CodeGuru 콘솔은 검색된 보안 인증을 사용하여 Secrets Manager에서 보안 암호를 자동으로 생성할 수 있습니다.

    2. Secrets Manager의 보안 암호 검색을 애플리케이션 코드에 통합합니다.

      1. 서버리스 Lambda 함수는 언어에 구애받지 않는 Lambda 확장을 사용할 수 있습니다.

      2. EC2 인스턴스 또는 컨테이너의 경우, 여러 인기 프로그래밍 언어로 Secrets Manager에서 암호를 검색하기 위한 클라이언트 측 코드 예제를 AWS 제공합니다.

  4. 주기적으로 코드 베이스를 검토하고 다시 스캔하여 코드에 추가된 새 보안 암호가 없는지 확인합니다.

    1. 소스 코드 리포지토리에 새로운 보안 암호가 커밋되지 않도록 git-secrets와 같은 도구 사용을 고려하세요.

  5. 예상치 못한 사용, 부적절한 보안 암호 액세스 또는 보안 암호 삭제 시도가 있는지 Secrets Manager 활동을 모니터링합니다.

  6. 자격 증명에 대한 인적 노출을 줄입니다. 이 용도 전용 IAM 역할로 보안 인증 정보를 읽고, 쓰고, 수정할 수 있는 액세스를 제한하고, 소규모 운영 사용자 하위 집합에게만 역할을 수임할 수 있는 액세스 권한만 제공합니다.

리소스

관련 모범 사례:

관련 문서:

관련 비디오:

관련 워크숍: