View a markdown version of this page

프라이빗 인증서 AWS IAM Roles Anywhere 로 보안 - 권장 가이드

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

프라이빗 인증서 AWS IAM Roles Anywhere 로 보안

Barnali Singh, Amazon Web Services

요약

이 패턴은 AWS 리소스에 액세스하는 외부 워크로드에 대해 안전한 인증서 기반 인증을 활성화하기 위해 AWS Private Certificate Authority (AWS Private CA) AWS IAM Roles Anywhere 를 사용하여를 구현하는 방법을 보여줍니다. 이 솔루션을 사용하면 X.509 인증서를 사용하여 임시 AWS 자격 증명을 얻어 장기 액세스 키가 필요하지 않습니다. 이는 AWS CloudFormation 템플릿 및 쉘 스크립트를 통한 완전한 자동화를 포함하는 클라우드 네이티브 보안 패턴으로, 이를 통해 조직은 온프레미스 애플리케이션, CI/CD 파이프라인 및 외부 시스템에 대한 보안 하이브리드 인증을 신속하게 배포할 수 있습니다.

사전 조건 및 제한 사항

사전 조건 

인프라 배포의 경우AWS:

  • AWS CLI 관리 권한으로 설치 및 구성됨

  • IAM IAM Roles Anywhere, 및 AWS Private CA 서비스에 대한 관리 권한

클라이언트 시스템 설정의 경우:

  • AWS CLI는 클라이언트 시스템에 다음과 같은 권한으로 설치됩니다.

    • acm-pca:IssueCertificate

    • acm-pca:GetCertificate

  • 클라이언트 시스템에 설치된 OpenSSL

  • AWS 각 클라이언트 시스템에 설치된 서명 도우미

  • X.509 인증서 및 PKI 개념에 대한 기본 이해

참고

CloudFormation 템플릿은 AWS 리소스 생성을 자동으로 처리합니다. OpenSSL은 인증서를 사용하여 AWS 리소스에 액세스하는 외부 시스템에서만 필요합니다.

제한 사항

  • 루트 CA의 인증서 유효 기간은 최대 10년으로 제한됩니다.

  • 클라이언트 인증서를 정기적으로 교체합니다. 최소 1년에 한 번이 작업을 수행하는 것이 좋습니다.

  • 리전 제한: 신뢰 앵커 및는 동일한 AWS 리전에 있어야 AWS Private CA 합니다.

  • 최대 인증서 크기: 클라이언트 인증서의 경우 16KB

제품 버전

  • AWS CLI 버전 2.0 이상

  • OpenSSL 1.1.1 이상

  • AWS 서명 도우미 1.4.0 이상

  • AWS Private CA, 현재 버전

  • IAM Roles Anywhere e, 현재 버전

아키텍처

대상 기술 스택

• AWS Private CA - 인증서 발급을 위한 루트 CA

• IAM Roles Anywhere - 인증서 기반 역할 가정 서비스

• IAM 역할 및 정책 - 액세스 제어 및 권한

• AWS Signing Helper - 클라이언트 측 자격 증명 검색 도구

• OpenSSL - 인증서 및 키 생성

• CloudFormation - 인프라 자동화

대상 아키텍처 

그림 1 IAM Roles Anywhere인증서 기반 인증

아키텍처는 다음으로 구성됩니다.

  1. 현재 인증서 - 외부 시스템에서에 X.509 인증서 제공 AWS

  2. 인증 - 인증서를 IAM Roles Anywhere 수신하고 인증을 시작합니다.

  3. 확인 - 신뢰 앵커는 신뢰할 수 있는 인증 기관에 대해 인증서를 확인합니다.

  4. 검증 - 인증서 인증 및 상태를 AWS Private CA 검증합니다.

  5. 인증서 유효 - 인증서가 유효하고 신뢰할 수 있는지 AWS Private CA 확인합니다.

  6. 역할 수임 - 외부 시스템이 구성된 IAM 역할을 수임하도록 IAM Roles Anywhere 허용합니다.

  7. 액세스 권한 부여 - 외부 시스템은 리소스에 액세스 AWS 하기 위한 임시 자격 증명을 받습니다.

자동화 및 규모 조정

이 패턴에는 다음을 통한 완전한 자동화가 포함됩니다.

• 구성 가능한 IAM 권한을 사용한 AWS 리소스 프로비저닝을 위한 CloudFormation 템플릿

• 인증서 생성 및 클라이언트 설정을 위한 쉘 스크립트

• 여러 환경 및 사용자 지정 IAM 정책에 대한 파라미터화된 구성

• 여러 클라이언트에 대한 배치 인증서 생성

• 자동 자격 증명 헬퍼 설치 및 구성

워크플로

  1. 를 사용하여 인증서 기반 인증에 필요한 기본 AWS 서비스를 설정합니다 IAM Roles Anywhere.

  2.  보안 AWS 액세스를 위한 클라이언트 측 인증서 및 인증 도구를 생성하고 구성합니다.

  3. 인증서 기반 인증 기능을 확인하고 진행 중인 작업에 대한 모니터링을 설정합니다.

도구

• CloudFormation - PCA, 신뢰 앵커, IAM 역할 및 프로파일 생성 자동화

•- AWS 서비스 상호 작용을 위한 AWS CLI 명령줄 인터페이스

• OpenSSL - 인증서 서명 요청을 생성하고 인증서를 관리합니다.

• AWS 헬퍼 서명 - 인증서를 임시 AWS 자격 증명으로 교환합니다.

• Bash/쉘 스크립트 - 전체 설정 프로세스를 자동화합니다.

코드 리포지토리

프라이빗 인증 기관을 사용하는 AWS IAM Roles Anywhere

모범 사례

  • 를 사용하여 최소 권한 원칙에 따라 IAM 정책 구성 --iam-policies parameter

  • 클라이언트 인증서를 정기적으로 교체합니다. 매년이 작업을 수행하는 것이 좋습니다.

  • 신뢰 정책에서 강력한 인증서 검증 사용

  • 인증서 해지 절차 구현

  • 인증서 만료 날짜 모니터링

에픽

작업설명필요한 기술

인프라 배포 CloudFormation

Trust Anchor AWS Private CA, 적절한 정책이 있는 IAM 역할 및 IAM Roles Anywhere 프로필을 포함하여 필요한 모든 AWS 리소스를 프로비저닝하는 CloudFormation 템플릿을 생성하고 배포합니다.   프로젝트 이름 지정, 인증서 유효 기간, 세션 기간 및 IAM 정책 연결에 대한 파라미터를 구성하여 핵심 인프라 기반을 설정합니다.

클라우드 아키텍트, DevOps 엔지니어

인증 기관 설정 구성

루트 인증서를 설치하고, 인증서 템플릿을 구성하고, 인증서 신뢰 체인을 설정 AWS Private CA 하여를 초기화합니다. 적절한 PKI 인프라를 보장하기 위해 IAM Roles Anywhere 인증에 필요한 인증서 유효 기간, 키 알고리즘 및 인증서 확장을 설정합니다.

AWS 관리자, 클라우드 관리자

&AWS; 리소스 구성 검증

배포된 AWS 모든 리소스에 대한 포괄적인 검증을 수행하여 적절한 구성 및 연결을 보장합니다. 신뢰 앵커가 올바르게 연결되어 있고 AWS Private CA, IAM 역할에 적절한 권한이 있으며, 프로필이 올바르게 구성되어 있고, 인증서 기반 인증 워크플로에 대한 모든 리소스가 활성/준비 상태인지 확인합니다.

AWS 시스템 관리자, 테스트 엔지니어
작업설명필요한 기술

클라이언트 환경 준비

배포 스크립트를 실행 가능하게 만들고 적절한 권한을 보장하여 클라이언트 환경을 설정합니다.  필요한 도구 및 종속성을 사용하여 로컬 시스템을 구성하고, 스크립트 접근성을 확인하고, 인증서 생성 및 배포 프로세스의 기반을 설정합니다.

DevOps 엔지니어, 시스템 관리자

인증서 서명 요청 생성

OpenSSL 또는 동등한 도구를 사용하여 클라이언트 시스템에 대한 인증서 서명 요청(CSR)을 생성합니다. 주제 정보, 키 알고리즘 및 인증서 확장을 포함한 인증서 파라미터를 구성합니다.   CSR이 AWS Private CA 요구 사항을 충족하고 IAM Roles Anywhere 인증을 위한 적절한 메타데이터가 포함되어 있는지 확인합니다.

클라우드 관리자, DevOps 엔지니어

를 통해 클라이언트 인증서 발급 AWS Private CA

를 통해 CSR을 처리 AWS Private CA 하여 유효한 클라이언트 인증서를 발급합니다. 인증서 유효 기간, 인증서 템플릿을 구성하고 적절한 인증서 체인 설정을 보장합니다. 인증서 발급을 확인하고 클라이언트 배포를 위해 서명된 인증서를 다운로드합니다.

AWS 관리자, 클라우드 아키텍트
작업설명필요한 기술

임시 AWS 자격 증명 획득

자격 증명 헬퍼 스크립트를 실행하여 구성된 클라이언트 인증서와 프라이빗 키를 사용하여 임시 AWS 자격 증명을 검색합니다.  자격 증명 검색 프로세스가 올바르게 작동하는지 확인하고, 자격 증명 형식 및 만료 시간을 검증하고, 원활한 인증 워크플로를 위해 IAM Roles Anywhere 서비스와 적절하게 통합되도록 합니다.

DevOps 엔지니어, 시스템 관리자

AWS 리소스 액세스 테스트

획득한 임시 자격 증명을 사용하여 AWS 리소스 액세스에 대한 포괄적인 테스트를 수행합니다. 다양한 AWS CLI 명령 및 API 호출을 실행하여 Amazon S3, Amazon EC2 및와 같은 대상 서비스에 대한 연결을 확인합니다 AWS Lambda. 권한이 구성된 IAM 역할 정책과 일치하는지 확인하고 성공적인 액세스 패턴을 문서화합니다.

테스트 엔지니어, 클라우드 관리자

역할 가정 및 권한 확인

IAM 역할 가정 프로세스 및 권한 경계를 철저히 검증합니다. 허용된 작업과 제한된 작업을 모두 테스트하여 최소 권한 액세스가 제대로 적용되었는지 확인합니다. 세션 기간 제한, 자격 증명 새로 고침 메커니즘을 확인하고 역할 가정이 보안 모범 사례를 따르는지 확인합니다.

AWS 관리자, 테스트 엔지니어

모니터링 및 로깅 구현

 인증서 기반 인증 시스템에 대한 포괄적인 모니터링 및 로깅을 설정합니다. 감사 추적에 대한 CloudTrail 로깅을 구성하고, 인증서 만료 모니터링을 구현하고, 인증 실패에 대한 알림을 설정하고, IAM Roles Anywhere 인프라 전반의 사용 패턴 및 보안 이벤트를 추적하기 위한 대시보드를 설정합니다.

DevOps 엔지니어, 클라우드 아키텍트

문제 해결

문제Solution

인증서 검증 실패 - 인증을 시도할 때 "인증서 검증 실패" 또는 "InvalidCertificate" 오류. 

해결 단계:

•를 사용하여 인증서 유효 날짜 확인 

openssl x509 -in certificate.pem -dates -noout

• 신뢰 앵커 구성이 프라이빗 CA를 올바르게 가리키는지 확인

• 프라이빗 키가 인증서에 해당하는지 확인

• 잘못된 CA에서 발급한 경우 인증서 재생성

 IAM 권한 거부 오류 - 인증 성공에도 불구하고 리소스에 액세스할 때 "액세스 거부됨" 또는 "UnauthorizedOperation" AWS

해결 단계:

• 필요한 권한을 포함하도록 IAM 역할 정책 검토 및 확장

• 신뢰 정책에 rolesanywhere.amazonaws.com 신뢰할 수 있는 엔터티로 포함되어 있는지 확인합니다.

• 프로필 ARN 구성이 배포된 리소스와 일치하는지 확인

• 장기 실행 프로세스를 위한 자격 증명 새로 고침 메커니즘 구현

관련 리소스

추가 정보

이 패턴은 하이브리드 클라우드 아키텍처, 외부에서 실행되는 CI/CD 파이프라인 AWS또는 보안 AWS 액세스가 필요한 외부 시스템이 있는 조직에 적합합니다. 인증서 기반 접근 방식은 장기 액세스 키보다 더 나은 보안을 제공하고를 통해 중앙 집중식 인증서 관리를 활성화합니다 AWS Private CA.

구성 가능한 IAM 권한 - 솔루션은를 통해 유연한 IAM 정책 구성을 지원합니다--iam-policies parameter.

  • 기본값: ReadOnlyAccess 안전한 초기 배포

  • 사용자 지정: 특정 사용 사례에 대해 쉼표로 구분된 정책 ARNs 지정합니다. 예: S3ReadOnlyAccessEC2ReadOnlyAccess, 또는 사용자 지정 정책. 복잡한 권한 요구 사항에 대해 여러 정책을 지원합니다.

사용 예제:

# Default read-only access ./deploy.sh # S3-only access ./deploy.sh --iam-policies "arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess" # Multiple services ./deploy.sh --iam-policies "arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess,arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess"