쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

AWS AppConfig의 보안

포커스 모드
AWS AppConfig의 보안 - AWS AppConfig

AWS에서는 클라우드 보안을 가장 중요하게 생각합니다. AWS 고객은 보안에 가장 보안에 민감한 조직의 요구 사항에 부합하도록 구축된 데이터 센터 및 네트워크 아키텍처의 혜택을 누릴 수 있습니다.

보안은 AWS와 사용자의 공동 책임입니다. 공동 책임 모델은 이 사항을 클라우드의 보안 및 클라우드 내 보안으로 설명합니다.

  • 클라우드의 보안 - AWS는 AWS 클라우드에서 AWS 서비스를 실행하는 인프라를 보호합니다. AWS는 또한 안전하게 사용할 수 있는 서비스를 제공합니다. 서드 파티 감사자는 AWS 규정 준수 프로그램의 일환으로 보안 효과를 정기적으로 테스트하고 검증합니다. AWS Systems Manager에 적용되는 규정 준수 프로그램에 대한 자세한 내용은 규정 준수 프로그램의 범위에 속하는 AWS 서비스 를 참조하십시오.

  • 클라우드의 보안 – 귀하의 책임은 귀하가 사용하는 AWS 서비스에 의해 결정됩니다. 또한 귀하는 귀사의 데이터의 민감도, 귀사의 요구 사항, 관련 법률 및 규정을 비롯한 기타 요소에 대해서도 책임이 있습니다.

AWS AppConfig는 AWS Systems Manager의 기능입니다. AWS AppConfig 사용 시 책임 분담 모델을 적용하는 방법을 이해하려면 AWS Systems Manager 보안을 참조하십시오. 이 섹션에서는 AWS AppConfig의 보안 및 규정 준수 목표를 충족하도록 Systems Manager를 구성하는 방법을 설명합니다.

최소 권한 액세스 구현

보안 모범 사례로, 특정 조건에서 특정 리소스에 대한 특정 작업을 수행하는 데 필요한 최소한의 권한만 ID에 부여해야 합니다. AWS AppConfig Agent는 에이전트가 인스턴스 또는 컨테이너의 파일 시스템에 액세스할 수 있도록 백업디스크에 쓰기라는 두 가지 기능을 제공합니다. 이러한 기능을 활성화하면 파일 시스템의 지정된 구성 파일에 쓸 수 있는 권한이 AWS AppConfig Agent에만 있는지 확인합니다. 또한 이러한 구성 파일에서 읽는 데 필요한 프로세스에만 해당 권한이 있는지도 확인합니다. 최소 권한 액세스를 구현하는 것이 오류 또는 악의적인 의도로 인해 발생할 수 있는 보안 위험과 영향을 최소화할 수 있는 근본적인 방법입니다.

최소 권한 액세스 구현에 대한 자세한 내용은 AWS Well-Architected Tool 사용 설명서에서 SEC03-BP02 최소 권한 액세스 부여를 참조하세요. 이 단원에서 언급한 AWS AppConfig Agent 기능에 대한 자세한 내용은 매니페스트를 사용하여 추가 검색 기능 활성화 단원을 참조하세요.

AWS AppConfig의 저장된 데이터 암호화

AWS AppConfig는 AWS 소유 키를 사용하여 저장된 고객 데이터를 보호하기 위해 기본적으로 암호화를 제공합니다.

AWS 소유 키 — AWS AppConfig는 기본적으로 이러한 키를 사용하여 서비스에서 배포하고 AWS AppConfig 데이터 저장소에 호스팅되는 데이터를 자동으로 암호화합니다. 사용자는 AWS 소유 키를 확인, 관리 또는 사용하거나 사용을 감사할 수 없습니다. 하지만 데이터를 암호화하는 키를 보호하기 위해 어떤 액션을 수행하거나 어떤 프로그램을 변경할 필요가 없습니다. 자세한 내용은 AWS Key Management Service 개발자 안내서AWS 소유 키 섹션을 참조하십시오.

이 암호화 계층을 비활성화하거나 다른 암호화 유형을 선택할 수는 없지만 AWS AppConfig 데이터 저장소에 호스팅된 구성 데이터를 저장하고 구성 데이터를 배포할 때 사용할 고객 관리 키를 지정할 수 있습니다.

고객 관리 키 — AWS AppConfig는 직접 생성하고 소유하고 관리하는 대칭형 고객 관리 키를 지원하여 기존 AWS 소유 키에 두 번째 암호화 계층을 추가할 수 있습니다. 이 암호화 계층을 완전히 제어할 수 있으므로 다음과 같은 작업을 수행할 수 있습니다.

  • 키 정책 및 권한 부여 수립 및 유지

  • IAM 정책 수립 및 유지

  • 키 정책 활성화 및 비활성화

  • 키 암호화 자료 교체

  • 태그 추가

  • 키 별칭 생성

  • 키 삭제 일정 수립

자세한 내용은 AWS Key Management Service 개발자 안내서고객 관리 키를 참조하십시오.

AWS AppConfig는 고객 관리형 키를 지원합니다

AWS AppConfig는 구성 데이터에 대한 고객 관리 키 암호화를 지원합니다. AWS AppConfig 호스팅된 데이터 저장소에 저장된 구성 버전의 경우 고객은 해당 구성 프로필에 KmsKeyIdentifier를 설정할 수 있습니다. CreateHostedConfigurationVersion API 작업을 사용하여 새 버전의 구성 데이터를 만들 때마다 AWS AppConfig는 저장하기 전에 데이터 암호화를 위해 KmsKeyIdentifier에서 AWS KMS 데이터 키를 생성합니다. 나중에 GetHostedConfigurationVersion 또는 StartDeployment API 작업 중에 데이터에 액세스하면 AWS AppConfig는 생성된 데이터 키에 대한 정보를 사용하여 구성 데이터를 복호화합니다.

AWS AppConfig는 또한 배포된 구성 데이터에 대한 고객 관리형 키 암호화에 대한 지원도 제공합니다. 구성 데이터를 암호화하기 위해 고객은 KmsKeyIdentifier를 배포에 제공할 수 있습니다. AWS AppConfig는 이 KmsKeyIdentifier로 AWS KMS 데이터 키를 생성하여 StartDeployment API 작업에 대한 데이터를 암호화합니다.

AWS AppConfig 암호화 액세스

고객 관리형 키를 생성할 때는 다음 키 정책을 사용하여 키를 사용할 수 있는지 확인하십시오.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account_ID:role/role_name" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" } ]

고객 관리 키를 사용하여 호스팅된 구성 데이터를 암호화하려면 CreateHostedConfigurationVersion을 호출하는 ID에 사용자, 그룹 또는 역할에 할당할 수 있는 다음과 같은 정책 설명문이 필요합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:GenerateDataKey, "Resource": "arn:aws:kms:Region:account_ID:key_ID" } ] }

Secrets Manager 암호를 사용하거나 고객 관리 키로 암호화된 기타 구성 데이터를 사용하는 경우 retrievalRoleArn은 데이터를 복호화하고 검색하기 위해 kms:Decrypt가 필요합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:Region:account_ID:configuration source/object" } ] }

AWS AppConfigStartDeployment API 작업을 호출할 때 StartDeployment를 호출하는 ID에 사용자, 그룹 또는 역할에 할당할 수 있는 다음과 같은 IAM 정책이 필요합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:GenerateDataKey*" ], "Resource": "arn:aws:kms:Region:account_ID:key_ID" } ] }

AWS AppConfigGetLatestConfiguration API 작업을 호출할 때 GetLatestConfiguration을 호출하는 ID에 사용자, 그룹 또는 역할에 할당할 수 있는 다음과 같은 정책이 필요합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt, "Resource": "arn:aws:kms:Region:account_ID:key_ID" } ] }

암호화 컨텍스트

암호화 컨텍스트는 데이터에 대한 추가 컨텍스트 정보를 포함하는 선택적 키-값 페어 세트입니다.

AWS KMS는 암호화 컨텍스트를 추가 인증 데이터로 사용하여 인증된 암호화를 지원합니다. 데이터 암호화 요청에 암호화 컨텍스트를 포함하는 경우, AWS KMS는 암호화된 데이터에 암호화 컨텍스트를 바인딩합니다. 데이터 복호화를 위해, 이 요청에 동일한 암호화 컨텍스트를 포함합니다.

AWS AppConfig암호화 컨텍스트: AWS AppConfig는 암호화된 호스팅 구성 데이터 및 배포에 대한 모든 AWS KMS 암호화 작업에서 암호화 컨텍스트를 사용합니다. 컨텍스트에는 데이터 유형에 해당하는 키와 특정 데이터 항목을 식별하는 값이 포함됩니다.

AWS의 암호화 키 모니터링

AWS AppConfig에서 AWS KMS 고객 관리형 키를 사용하는 경우 AWS CloudTrail 또는 Amazon CloudWatch Logs를 사용하여 AWS AppConfig가 AWS KMS로 보내는 요청을 추적할 수 있습니다.

다음 예시는 고객 관리 키로 암호화된 데이터에 액세스하기 위해 AWS AppConfig에서 호출한 AWS KMS작업을 Decrypt가 모니터링하기 위한 CloudTrail 이벤트입니다.

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "appconfig.amazonaws.com" }, "eventTime": "2023-01-03T02:22:28z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "Region", "sourceIPAddress": "172.12.34.56", "userAgent": "ExampleDesktop/1.0 (V1; OS)", "requestParameters": { "encryptionContext": { "aws:appconfig:deployment:arn": "arn:aws:appconfig:Region:account_ID:application/application_ID/environment/environment_ID/deployment/deployment_ID" }, "keyId": "arn:aws:kms:Region:account_ID:key/key_ID", "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "account_ID", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:Region:account_ID:key_ID" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "account_ID", "sharedEventID": "dc129381-1d94-49bd-b522-f56a3482d088" }

인터페이스 엔드포인트(AWS PrivateLink)를 사용하여 AWS AppConfig에 액세스

AWS PrivateLink(을)를 사용하여 VPC와 Amazon EKS 사이에 프라이빗 연결을 생성할 수 있습니다. 인터넷 게이트웨이, NAT 디바이스, VPN 연결 또는 AWS Direct Connect 연결을 사용하지 않고 VPC에 있는 것처럼 AWS AppConfig에 액세스할 수 있습니다. VPC의 인스턴스에서 AWS AppConfig API에 액세스하는 데는 퍼블릭 IP 주소가 필요하지 않습니다.

AWS PrivateLink에서 제공되는 인터페이스 엔드포인트를 생성하여 이 프라이빗 연결을 설정합니다. 인터페이스 엔드포인트에 대해 사용 설정하는 각 서브넷에서 엔드포인트 네트워크 인터페이스를 생성합니다. 이는 AWS AppConfig로 향하는 트래픽의 진입점 역할을 하는 요청자 관리형 네트워크 인터페이스입니다.

자세한 내용은 AWS PrivateLink 가이드의 AWS PrivateLink를 통해 AWS 서비스에 액세스를 참조하세요.

AWS AppConfig에 대한 고려 사항

AWS AppConfig에 대한 인터페이스 엔드포인트를 설정하려면 먼저 AWS PrivateLink 가이드고려 사항를 검토합니다.

AWS AppConfig는 인터페이스 엔드포인트를 통해 appconfigappconfigdata 서비스에 대한 직접 호출을 지원합니다.

AWS AppConfig용 인터페이스 엔드포인트 생성

Amazon VPC 콘솔 또는 AWS Command Line Interface(AWS CLI)를 사용하여 AWS AppConfig에 대한 인터페이스 엔드포인트를 생성할 수 있습니다. 자세한 내용은 AWS PrivateLink 설명서인터페이스 엔드포인트 생성을 참조하십시오.

다음 서비스 이름을 사용하여 AWS AppConfig에 대한 엔드포인트를 생성합니다.

com.amazonaws.region.appconfig
com.amazonaws.region.appconfigdata

인터페이스 엔드포인트에 프라이빗 DNS를 사용하도록 설정하는 경우, 리전에 대한 기본 DNS 이름(예: AWS AppConfig)을 사용하여 에 API 요청을 할 수 있습니다. 예: appconfig.us-east-1.amazonaws.com.rproxy.goskope.comappconfigdata.us-east-1.amazonaws.com.

엔드포인트의 엔드포인트 정책 생성

엔드포인트 정책은 인터페이스 인터페이스 엔드포인트에 연결할 수 있는 IAM 리소스입니다. 기본 엔드포인트 정책을 사용하면 인터페이스 엔드포인트를 통해 AWS AppConfigI에 대한 전체 액세스를 허용합니다. VPC에서 AWS AppConfig에 허용되는 액세스를 제어하려면 사용자 지정 엔드포인트 정책을 인터페이스 엔드포인트에 연결합니다.

엔드포인트 정책은 다음 정보를 지정합니다.

  • 작업을 수행할 수 있는 보안 주체 (AWS 계정, IAM 사용자, IAM 역할)

  • 수행할 수 있는 작업.

  • 작업을 수행할 수 있는 리소스.

자세한 내용은 AWS PrivateLink 가이드의 엔드포인트 정책을 사용하여 서비스에 대한 액세스 제어를 참조하세요.

예제: AWS AppConfig 작업에 대한 VPC 엔드포인트 정책

다음은 사용자 지정 엔드포인트 정책의 예입니다. 이 정책은 인터페이스 엔드포인트에 연결될 때 모든 리소스의 모든 보안 주체에 대한 액세스 권한을 나열된 AWS AppConfig 작업에 부여합니다.

{ "Statement": [ { "Principal": "*", "Effect": "Allow", "Action": [ "appconfig:CreateApplication", "appconfig:CreateEnvironment", "appconfig:CreateConfigurationProfile", "appconfig:StartDeployment", "appconfig:GetLatestConfiguration" "appconfig:StartConfigurationSession" ], "Resource":"*" } ] }

Secrets Manager 키 교체

이 섹션에서는 AWS AppConfig와 Secrets Manager와의 통합에 대한 중요한 보안 정보를 설명합니다. Secrets Manager에 대한 자세한 내용은 AWS Secrets Manager 사용 설명서AWS Secrets Manager란 무엇입니까?를 참조하십시오.

AWS AppConfig에서 배포한 Secrets Manager 암호의 자동 교체 설정

교체는 Secrets Manager에 저장되어 있는 암호를 주기적으로 업데이트하는 프로세스입니다. 보안 암호를 교체하면 보안 암호 및 데이터베이스 또는 서비스 모두에서 자격 증명이 업데이트됩니다. Secrets Manager에서 암호와 데이터베이스를 업데이트하기 위해 AWS Lambda 함수를 사용하여 자동 암호 교체를 구성할 수 있습니다. 자세한 내용은 AWS Secrets Manager 사용 설명서에서 AWS Secrets Manager 보안 암호 교체를 참조하십시오.

AWS AppConfig에서 배포한 Secrets Manager 암호의 키 교체를 활성화하려면 교체 Lambda 함수를 업데이트하고 교체된 암호를 배포하십시오.

참고

암호가 교체되고 새 버전으로 완전히 업데이트된 후 AWS AppConfig 구성 프로필을 배포하세요. VersionStage 상태가 AWSPENDING에서 AWSCURRENT로 변경되었으므로 암호가 교체되었는지 확인할 수 있습니다. 암호 교체 완료는 Secrets Manager Rotation 템플릿 finish_secret 함수 내에서 이루어집니다.

다음은 보안 암호가 교체된 후 AWS AppConfig 배포를 시작하는 함수의 예입니다.

import time import boto3 client = boto3.client('appconfig') def finish_secret(service_client, arn, new_version): """Finish the rotation by marking the pending secret as current This method finishes the secret rotation by staging the secret staged AWSPENDING with the AWSCURRENT stage. Args: service_client (client): The secrets manager service client arn (string): The secret ARN or other identifier new_version (string): The new version to be associated with the secret """ # First describe the secret to get the current version metadata = service_client.describe_secret(SecretId=arn) current_version = None for version in metadata["VersionIdsToStages"]: if "AWSCURRENT" in metadata["VersionIdsToStages"][version]: if version == new_version: # The correct version is already marked as current, return logger.info("finishSecret: Version %s already marked as AWSCURRENT for %s" % (version, arn)) return current_version = version break # Finalize by staging the secret version current service_client.update_secret_version_stage(SecretId=arn, VersionStage="AWSCURRENT", MoveToVersionId=new_version, RemoveFromVersionId=current_version) # Deploy rotated secret response = client.start_deployment( ApplicationId='TestApp', EnvironmentId='TestEnvironment', DeploymentStrategyId='TestStrategy', ConfigurationProfileId='ConfigurationProfileId', ConfigurationVersion=new_version, KmsKeyIdentifier=key, Description='Deploy secret rotated at ' + str(time.time()) ) logger.info("finishSecret: Successfully set AWSCURRENT stage to version %s for secret %s." % (new_version, arn))
프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.