본문 바로가기
BE 공부/AWS

AWS Secrets Manager: 쉽게 이해하는 보안 정보 관리의 시작

by 꼬질꼬질두부 2025. 1. 2.

AWS Secrets Manager: 쉽게 이해하는 보안 정보 관리의 시작

AWS Secrets Manager는 AWS에서 제공하는 완전 관리형 서비스로, 애플리케이션에서 사용되는 민감한 정보를 안전하게 저장하고 관리하도록 도와줍니다. 여기서 말하는 민감한 정보란 데이터베이스 자격 증명, API 키, OAuth 토큰 등과 같은 정보를 말합니다. 이를 통해 하드코딩된 보안 정보를 코드에서 제거하고, 자동화된 방식으로 보안 수준을 한 단계 업그레이드할 수 있습니다.


📌 Secrets Manager란 무엇인가요?

AWS Secrets Manager는 다음과 같은 문제를 해결합니다:

  1. 보안 정보 하드코딩의 위험성
    • 보안 정보를 소스 코드에 하드코딩하면 코드 유출 시 민감한 정보가 그대로 노출됩니다.
  2. 수동 교체의 번거로움
    • 보안 정보의 변경 및 업데이트는 관리하기 어렵고 실수로 누락될 위험이 있습니다.
  3. 규정 준수 및 감사
    • 보안 정보의 관리 이력 및 접근 내역을 확인해야 하는 규정 요구사항에 대응하기 어렵습니다.

Secrets Manager는 이 모든 문제를 해결할 수 있는 서비스를 제공합니다.


🌟 Secrets Manager의 주요 기능

1. 안전한 보안 정보 저장

Secrets Manager는 보안 정보를 암호화하여 안전하게 저장합니다. AWS Key Management Service(AWS KMS)를 사용하여 암호화 키를 관리하므로, 데이터를 보호하는 데 있어 강력한 보안을 제공합니다.

  • 암호화된 저장소
    • 모든 보안 정보는 KMS를 통해 암호화됩니다.
    • 키에 접근할 수 있는 권한을 설정하여 추가적인 보안 계층을 제공합니다.

2. 자동 교체(Auto-Rotation)

Secrets Manager는 데이터베이스 자격 증명과 같은 보안 정보를 자동으로 교체하는 기능을 지원합니다.

  • 장점:
    • 교체 주기를 설정하면 Secrets Manager가 자동으로 새로운 자격 증명을 생성하고 기존 시스템에 업데이트합니다.
    • 수동 작업을 줄이고 보안 사고를 예방할 수 있습니다.

3. 버전 관리 및 롤백

Secrets Manager는 각 보안 정보의 변경 이력을 저장합니다. 이를 통해 필요할 경우 이전 버전으로 롤백할 수 있습니다.

4. 세분화된 액세스 제어

IAM(Identity and Access Management) 정책을 사용하여 보안 정보에 대한 접근 권한을 세밀하게 제어할 수 있습니다.

5. 모니터링 및 감사

AWS CloudTrail과 통합되어 모든 보안 정보 접근 활동을 기록합니다. 이를 통해 보안 감사와 규정 준수를 간편하게 관리할 수 있습니다.


🚀 Secrets Manager를 사용해야 하는 이유

1. 보안 강화

보안 정보를 안전하게 암호화하고, 하드코딩된 정보 노출의 위험성을 제거합니다.

📌 예시 상황:

문제:
어떤 개발팀에서 애플리케이션의 데이터베이스 자격 증명을 소스 코드에 하드코딩하여 사용하고 있었습니다. 코드가 유출되거나 잘못된 권한으로 접근이 발생하면 데이터베이스가 위험에 노출될 수 있습니다.

해결:
AWS Secrets Manager를 사용하여 데이터베이스 자격 증명을 저장하고, 애플리케이션이 Secrets Manager API를 호출하여 자격 증명을 동적으로 가져오도록 변경합니다.

2. 자동화된 관리

자동 교체 및 버전 관리를 통해 관리 부담을 줄이고 보안성을 높입니다.

📌 예시 상황:

문제:
운영팀이 데이터베이스 비밀번호를 정기적으로 변경해야 했으나, 이를 수동으로 관리하다 보니 변경된 비밀번호를 다른 팀과 공유하는 과정에서 실수가 발생했습니다.

해결:
AWS Secrets Manager의 자동 교체(Auto Rotation) 기능을 사용하여 주기적으로 데이터베이스 비밀번호를 변경하고, Secrets Manager가 자동으로 새로운 비밀번호를 애플리케이션에 업데이트하도록 설정합니다.

작동 원리:

  • Lambda 함수를 사용하여 데이터베이스 비밀번호를 새로 생성하고 Secrets Manager에 저장합니다.
  • 애플리케이션은 Secrets Manager API를 호출하여 항상 최신 비밀번호를 가져옵니다.

3. 확장성

AWS 서비스와 원활하게 통합되며, 규모에 상관없이 보안 정보를 쉽게 관리할 수 있습니다.

📌 예시 상황:

문제:
글로벌 전자상거래 플랫폼을 운영하는 회사에서 여러 리전에 분산된 애플리케이션이 데이터베이스 자격 증명을 사용하고 있습니다. 이 정보가 여러 곳에서 중복 관리되다 보니 보안성과 관리 효율성이 떨어졌습니다.

해결:
Secrets Manager를 사용하여 한 곳에서 중앙 집중적으로 보안 정보를 관리하고, 여러 리전에 걸쳐 있는 애플리케이션이 동일한 보안 정보를 안전하게 사용할 수 있도록 했습니다.

4. 규정 준수

PCI DSS, ISO 27001, GDPR 등 주요 보안 표준과 규정 요구사항을 충족합니다.

📌 예시 상황:

문제:
어떤 금융 회사가 고객의 결제 정보를 처리하면서 PCI DSS 규정을 준수해야 했습니다. 규정에 따르면 민감한 정보는 안전하게 암호화되어야 하며, 정보 접근 내역이 감사 가능해야 합니다.

해결:
Secrets Manager를 사용하여 결제 정보 API의 키와 토큰을 암호화된 상태로 저장하고, IAM 권한을 사용하여 특정 사용자와 애플리케이션만 해당 정보에 접근하도록 설정했습니다. AWS CloudTrail과 연동하여 보안 정보 접근 기록도 자동으로 관리했습니다.


📖 Secrets Manager 사용 방법

1. 보안 정보 저장

Node.js 코드 예제:

const AWS = require('aws-sdk');
const secretsManager = new AWS.SecretsManager({ region: 'ap-northeast-2' });
const params = {
	Name: 'myDatabaseCredentials',
    SecretString: JSON.stringify({ username: 'admin', password: 'password123' }),
    };
secretsManager.createSecret(params, (err, data) => {
	if (err) console.error(err);
    else console.log('Secret saved:', data);
});

2. 보안 정보 조회

Node.js 코드 예제:

const params = { SecretId: 'myDatabaseCredentials', };
secretsManager.getSecretValue(params, (err, data) => {
	if (err) console.error(err);
    else {
    	const secret = JSON.parse(data.SecretString);
        console.log('Retrieved secret:', secret);
        }
    });

3. 보안 정보 교체

자동 교체를 설정하면 Secrets Manager가 자격 증명을 주기적으로 갱신합니다. 이를 위해 Lambda 함수를 사용하여 교체 로직을 정의합니다.


💡 Secrets Manager와 Parameter Store의 차이점

  • Secrets Manager
    • 주로 데이터베이스 자격 증명, API 키 등 민감한 정보를 관리합니다.
    • 자동 교체 기능과 세분화된 권한 관리를 제공합니다.
  • Parameter Store
    • 애플리케이션 설정 및 구성 데이터를 관리합니다.
    • 보안 정보보다는 일반적인 설정 값에 적합합니다.

🛠 Secrets Manager의 비용

Secrets Manager는 저장된 보안 정보의 수와 API 호출 수에 따라 과금됩니다.

  • 예:
    • 기본 요금: 시크릿 하나당 월 $0.40
    • API 호출: 10,000건당 $0.05

비용에 대한 자세한 내용은 AWS Secrets Manager 요금 페이지를 참조하세요.

'BE 공부 > AWS' 카테고리의 다른 글

[OpenSearch] FGAC(Fine-Grained Access Control)와 JWT 활용  (1) 2025.01.22
Amazon Simple Notification Service(SNS)  (0) 2025.01.17
Amazon Simple Queue Service(SQS)  (0) 2024.12.30
AWS Credential과 Cognito  (2) 2024.12.12
Cognito와 KMS(2)  (0) 2024.12.12

댓글