ADDF 내장 보안 기능 - AWS 규범적 지침

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

ADDF 내장 보안 기능

ADDF(Autonomous Driving Data Framework)에는 다양한 보안 기능이 내장되어 있습니다. 기본적으로 이러한 기능은 보안 프레임워크를 설정하고 조직이 일반적인 엔터프라이즈 보안 요구 사항을 충족하는 데 도움이 되도록 설계되었습니다.

다음은 내장 보안 기능입니다.

ADDF 모듈 코드에 대한 최소 권한

최소 권한은 작업을 수행하는 데 필요한 최소 권한을 부여하는 보안 모범 사례입니다. 자세한 내용은 최소 권한 적용을 참조하세요. ADDF에서 제공하는 모듈은 다음과 같이 코드와 배포된 리소스에 대한 최소 권한 원칙을 엄격하게 따릅니다.

  • ADDF 모듈에 대해 생성된 모든 AWS Identity and Access Management(IAM) 정책에는 사용 사례에 필요한 최소 권한이 있습니다. 

  • AWS 서비스는 최소 권한 원칙에 따라 구성되고 배포됩니다. ADDF 제공 모듈은 특정 사용 사례에 필요한 서비스와 서비스 기능만 사용합니다.

코드형 인프라

ADDF는 프레임워크로서 ADDF 모듈을 코드형 인프라(IaC)로 배포하도록 설계되었습니다. IaC는 수동 배포 프로세스를 없애고 수동 프로세스로 인해 발생할 수 있는 오류와 구성 오류를 방지하는 데 도움이 됩니다. 

ADDF는 일반적인 IaC 프레임워크를 사용하여 모듈을 오케스트레이션하고 배포하도록 설계되었습니다. 여기에는 다음이 포함되지만 이에 국한되지는 않습니다. 

다양한 IaC 프레임워크를 사용하여 다양한 모듈을 작성한 다음 ADDF를 사용하여 모듈을 배포할 수 있습니다.

ADDF 모듈에서 사용되는 기본 IaC 프레임워크는 AWS CDK입니다. AWS CDK는 AWS 리소스를 명령적으로 정의하는 데 사용할 수 있는 고급 객체 지향 추상화입니다. AWS CDK는 이미 다양한 서비스 및 시나리오에 대해 기본적으로 보안 모범 사례를 시행하고 있습니다. AWS CDK를 사용하면 보안 구성이 잘못될 위험이 감소합니다.

IaC에 대한 자동 보안 검사

오픈 소스 cdk-nag 유틸리티(GitHub)가 ADDF에 통합되었습니다. 이 유틸리티는 AWS CDK를 기반으로 하는 ADDF 모듈이 일반 및 보안 모범 사례를 준수하는지 자동으로 확인합니다. cdk-nag 유틸리티는 규칙과 규칙 팩을 사용하여 모범 사례를 위반하는 코드를 감지하고 보고합니다. 규칙과 전체 목록에 대한 자세한 내용은 cdk-nag rules(GitHub)를 참조하세요.

AWS CDK 배포 역할에 대한 사용자 지정 최소 권한 정책

ADDF는 AWS CDK v2를 광범위하게 사용합니다. 모든 ADDF AWS 계정을 AWS CDK로 부트스트랩해야 합니다. 자세한 내용은 Bootstrapping(AWS CDK 설명서)을 참조하세요.

기본적으로 AWS CDK는 부트스트랩된 계정에서 생성된 AWS CDK 배포 역할에 허용된 AdministratorAccess AWS 관리형 정책을 할당합니다. 이 역할의 전체 이름은 cdk-[CDK_QUALIFIER]-cfn-exec-role-[AWS_ACCOUNT_ID]-[REGION]입니다. AWS CDK는 이 역할을 사용하여 AWS CDK 배포 프로세스의 일부로 부트스트랩된 AWS 계정에 리소스를 배포합니다.

조직의 보안 요구 사항에 따라 AdministratorAccess 정책이 너무 허용적일 수 있습니다. AWS CDK 부트스트랩 프로세스의 일부로 필요에 따라 정책과 권한을 사용자 지정할 수 있습니다. --cloudformation-execution-policies 파라미터를 사용하여 새로 정의된 정책으로 계정을 다시 부트스트랩하면 정책을 변경할 수 있습니다. 자세한 내용은 Customizing bootstrapping(AWS CDK 설명서)을 참조하세요.

참고

이 보안 기능은 ADDF에만 국한된 것은 아니지만 ADDF 배포의 전반적인 보안을 강화할 수 있으므로 이 섹션에 나열되어 있습니다.

모듈 deployspec 파일에 대한 최소 권한 정책

각 모듈에는 deployspec.yaml이라는 배포 사양 파일이 포함되어 있습니다. 이 파일은 모듈의 배포 지침을 정의합니다. CodeSeeder는 이를 사용하여 AWS CodeBuild를 통해 대상 계정에 정의된 모듈을 배포합니다. CodeSeeder는 배포 사양 파일의 지침에 따라 리소스를 배포하기 위해 CodeBuild에 기본 서비스 역할을 할당합니다 이 서비스 역할은 최소 권한 원칙에 따라 설계되었습니다. 모든 ADDF 제공 모듈은 AWS CDK 애플리케이션으로 생성되므로 AWS CDK 애플리케이션을 배포하는 데 필요한 모든 권한이 이 서비스 역할에 포함됩니다.

그러나 AWS CDK 외부에서 stage 명령을 실행해야 하는 경우 CodeBuild에 대한 기본 서비스 역할을 사용하는 대신 사용자 지정 IAM 정책을 생성해야 합니다. 예를 들어, AWS CDK 이외의 IaC 배포 프레임워크(예: Terraform)를 사용하는 경우 해당 특정 프레임워크가 작동하기에 충분한 권한을 부여하는 IAM 정책을 생성해야 합니다. 전용 IAM 정책이 필요한 또 다른 시나리오는 install, pre_build, build 또는 post_build 명령에 다른 AWS 서비스에 대한 직접 AWS Command Line Interface(AWS CLI) 호출을 포함하는 경우입니다. 예를 들어, S3 버킷에 파일을 업로드하는 Amazon Simple Storage Service(S3) 명령이 모듈에 포함되어 있는 경우 사용자 지정 정책이 필요합니다. 사용자 지정 IAM 정책은 AWS CDK 배포 외부의 모든 AWS 명령에 대한 세분화된 제어를 제공합니다. 사용자 지정 IAM 정책의 예는 ModuleStack(SeedFarmer 설명서)을 참조하세요. ADDF 모듈에 대한 사용자 지정 IAM 정책을 생성할 때 최소 권한을 적용해야 합니다.

데이터 암호화

ADDF는 잠재적으로 민감한 데이터를 저장하고 처리합니다. 이러한 데이터를 보호하기 위해 SeedFarmer, CodeSeeder 및 ADDF 제공 모듈은 사용되는 모든 AWS 서비스에 대해 저장 데이터와 전송 중 데이터를 암호화합니다(demo-only 폴더의 모듈에 대해 명시적으로 달리 언급하지 않는 한).

Secrets Manager를 사용하는 보안 인증 스토리지

ADDF는 Docker Hub, JupyterHub 및 Amazon Redshift와 같은 다양한 서비스에 대한 다양한 시크릿을 처리하며, AWS Secrets Manager를 사용하여 ADDF 관련 시크릿을 저장합니다. 이렇게 하면 소스 코드에서 민감한 데이터를 제거할 수 있습니다.

Secrets Manager 시크릿은 대상 계정이 제대로 작동하는 데 필요한 경우에만 대상 계정에 저장됩니다. 기본적으로 도구 체인 계정에는 시크릿이 포함되어 있지 않습니다.

SeedFarmer 및 CodeSeeder의 보안 검토

SeedFarmerCodeSeeder(GitHub 리포지토리)는 ADDF 및 해당 ADDF 모듈을 배포하는 데 사용됩니다. 이러한 오픈 소스 프로젝트는 ADDF 보안 검토 프로세스에 설명된 대로 ADDF와 동일한 정기적인 AWS 내부 보안 검토 프로세스를 거칩니다.

CodeSeeder용 AWS CodeBuild 역할에 대한 권한 경계 지원

IAM 권한 경계는 ID 기반 정책이 IAM 엔터티에 부여할 수 있는 최대 권한을 정의하는 일반 보안 메커니즘입니다. SeedFarmer와 CodeSeeder는 각 대상 계정에 대한 IAM 권한 경계 연결을 지원합니다. 권한 경계는 CodeSeeder가 모듈을 배포할 때 CodeBuild에서 사용하는 모든 서비스 역할의 최대 권한을 제한합니다. 보안 팀이 ADDF 외부에서 IAM 권한 경계를 생성해야 합니다. IAM 권한 경계 정책 연결은 ADDF 배포 매니페스트 파일인 deployment.yaml 내의 속성으로 허용됩니다. 자세한 내용은 Permissions boundary support(SeedFarmer 설명서)를 참조하세요.

워크플로는 다음과 같습니다.

  1. 보안 팀이 보안 요구 사항에 따라 IAM 권한 경계를 정의하고 생성합니다. IAM 권한 경계는 각 ADDF AWS 계정에서 개별적으로 생성되어야 합니다. 출력은 권한 경계 정책 Amazon 리소스 이름(ARN) 목록입니다.

  2. 보안 팀이 ADDF 개발자 팀과 정책 ARN 목록을 공유합니다.

  3. ADDF 개발자 팀이 매니페스트 파일에 정책 ARN 목록을 통합합니다. 이 통합의 예는 sample-permissionboundary.yaml(GitHub)과 Deployment manifest(SeedFarmer 설명서)를 참조하세요.

  4. 배포에 성공하면 CodeBuild가 모듈을 배포하는 데 사용하는 모든 서비스 역할에 권한 경계가 연결됩니다.

  5. 보안 팀이 필요에 따라 권한 경계가 적용되는지 모니터링합니다.

AWS 다중 계정 아키텍처

AWS Well-Architected 프레임워크의 보안 원칙에 정의된 대로 조직의 요구 사항에 따라 리소스와 워크로드를 여러 AWS 계정으로 분리하는 것이 가장 좋습니다. 이는 AWS 계정이 격리 경계 역할을 하기 때문입니다. 자세한 내용은 AWS 계정 관리 및 분리를 참조하세요. 이 개념을 구현한 것이 다중 계정 아키텍처입니다. 적절하게 설계된 AWS 다중 계정 아키텍처는 워크로드 분류를 제공하며 보안 침해 발생 시 단일 계정 아키텍처보다 영향 범위가 작습니다.

ADDF는 기본적으로 AWS 다중 계정 아키텍처를 지원합니다. 조직의 보안 및 업무 분리 요구 사항에 따라 필요한 만큼의 AWS 계정에 ADDF 모듈을 배포할 수 있습니다. 도구 체인과 대상 계정 기능을 결합하여 단일 AWS 계정에 ADDF를 배포할 수 있습니다. 또는 ADDF 모듈이나 모듈 그룹에 대한 개별 대상 계정을 생성할 수 있습니다.

고려해야 할 유일한 제한 사항은 ADDF 모듈이 각 AWS 계정에 대한 최소 배포 단위를 나타낸다는 것입니다.

프로덕션 환경에서는 도구 체인 계정과 하나 이상의 대상 계정으로 구성된 다중 계정 아키텍처를 사용하는 것이 좋습니다. 자세한 내용은 ADDF 아키텍처 섹션을 참조하세요.

다중 계정 배포에 대한 최소 권한

다중 계정 아키텍처를 사용하는 경우 SeedFarmer는 대상 계정에 액세스하여 다음 세 가지 작업을 수행해야 합니다.

  1. 도구 체인 계정과 대상 계정에 ADDF 모듈 메타데이터를 씁니다.

  2. 도구 체인 계정과 대상 계정에서 현재 ADDF 모듈 메타데이터를 읽습니다.

  3. 모듈 배포 또는 업데이트를 위해 대상 계정에서 AWS CodeBuild 작업을 시작합니다.

다음 그림은 ADDF 관련 AWS Identity and Access Management(IAM) 역할을 수임하기 위한 작업을 포함한 크로스 계정 관계를 보여줍니다.

도구 체인 계정과 대상 계정이 있는 AWS 다중 계정 아키텍처의 IAM 역할

이러한 크로스 계정 작업은 잘 정의된 역할 수임 작업을 통해 수행됩니다.

  • ADDF 도구 체인 IAM 역할이 도구 체인 계정에 배포됩니다. SeedFarmer가 이 역할을 수임합니다. 이 역할에는 iam:AssumeRole 작업을 수행할 수 있는 권한이 있으며 각 대상 계정에서 ADDF 배포 IAM 역할을 수임할 수 있습니다. 또한 ADDF 도구 체인 IAM 역할은 로컬 AWS Systems Manager Parameter Store 작업을 실행할 수 있습니다.

  • ADDF 배포 IAM 역할이 각 대상 계정에 배포됩니다. 이 역할은 ADDF 도구 체인 IAM 역할을 사용하여 도구 체인 계정에서만 수임할 수 있습니다. 이 역할에는 로컬 AWS Systems Manager Parameter Store 작업 실행 권한과 CodeSeeder를 통해 CodeBuild 작업을 시작하고 설명하는 AWS CodeBuild 작업 실행 권한이 있습니다.

이러한 ADDF 관련 IAM 역할은 ADDF 부트스트래핑 프로세스의 일부로 생성됩니다. 자세한 내용은 https://github.com/awslabs/autonomous-driving-data-framework/blob/main/docs/deployment_guide.mdADDF Deployment Guide(GitHub)의 Bootstrap AWS 계정(s)를 참조하세요.

모든 크로스 계정 권한은 최소 권한 원칙에 따라 설정됩니다. 한 대상 계정이 손상되어도 다른 ADDF AWS 계정에 미치는 영향은 거의 없거나 전혀 없습니다.

ADDF에 대한 단일 계정 아키텍처의 경우 역할 관계는 동일하게 유지되며, 단일 AWS 계정으로 축소될 뿐입니다.