하드코딩된 시크릿을 다음으로 이동 AWS Secrets Manager - AWS Secrets Manager

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

하드코딩된 시크릿을 다음으로 이동 AWS Secrets Manager

코드에 일반 텍스트 보안 암호가 있는 경우 보안 암호를 교체하고 Secrets Manager에 저장하는 것이 좋습니다. 보안 암호를 Secrets Manager로 이동하면 코드를 보는 모든 사용자가 보안 암호를 볼 수 있는 문제가 해결됩니다. 앞으로는 코드가 Secrets Manager에서 직접 보안 암호를 검색하기 때문입니다. 보안 암호를 교체하면 현재의 하드 코딩된 보안 암호가 취소되어 더 이상 유효하지 않게 됩니다.

데이터베이스 보안 인증 정보 보안 암호에 대해서는 하드코딩된 데이터베이스 자격 증명을 다음으로 이동 AWS Secrets Manager 섹션을 참조하세요.

시작하기 전에 보안 암호에 액세스해야 하는 사용자를 결정해야 합니다. 다음과 같이 두 개의 IAM 역할을 사용하여 보안 암호에 대한 권한을 관리하는 것이 좋습니다.

  • 조직의 보안 암호를 관리하는 역할. 자세한 정보는 Secrets Manager 관리자 권한 섹션을 참조하세요. 이 역할을 사용하여 보안 암호를 생성하고 교체합니다.

  • 런타임 시 시크릿을 사용할 수 있는 역할 (예: 이 튜토리얼에서 사용하는 역할). RoleToRetrieveSecretAtRuntime 코드가 이 역할을 수임하여 보안 암호를 검색합니다. 이 자습서에서는 역할에 하나의 보안 암호 값을 검색할 수 있는 권한만 부여하고, 보안 암호의 리소스 정책을 사용하여 권한을 부여합니다. 다른 방법을 보려면 다음 단계 섹션을 참조하세요.

1단계: 보안 암호 생성

첫 번째 단계는 기존의 하드 코딩된 보안 암호를 Secrets Manager로 복사하는 것입니다. 비밀이 리소스와 관련된 경우 AWS 리소스와 동일한 지역에 저장하세요. 그렇지 않으면 사용 사례에서 지연 시간이 가장 낮은 지역에 저장하세요.

보안 암호(콘솔) 생성
  1. https://console.aws.amazon.com/secretsmanager/에서 Secrets Manager 콘솔을 엽니다.

  2. Store a new secret(새 보안 암호 저장)을 선택합니다.

  3. 보안 암호 유형 선택(Choose secret type) 페이지에서 다음을 수행합니다.

    1. 보안 암호 유형에서 다른 유형의 보안 암호를 선택합니다.

    2. 보안 암호를 키/값 쌍(Key/value pairs) 또는 일반 텍스트(Plaintext)로 입력합니다. 다음은 일부 예입니다.

      API 키 키/값 쌍:

      ClientID: my_client_id

      ClientSecret: bPxRfiWJALR XU TN FEMI/K7M ENG/ CY 예제 키

      보안 인증 정보 키/값 쌍:

      Username: saanvis

      Password: EXAMPLE-PASSWORD

      OAuth 토큰 일반 텍스트:

      AKIAI44QH8DHBEXAMPLE

      디지털 인증서 일반 텍스트:
      -----BEGIN CERTIFICATE----- EXAMPLE -----END CERTIFICATE-----
      프라이빗 키 일반 텍스트:
      –---BEGIN PRIVATE KEY –-- EXAMPLE ––-- END PRIVATE KEY –---
    3. 암호화 키(Encryption key)에서 aws/secretsmanager를 선택하여 Secrets Manager에 대해 AWS 관리형 키 를 사용합니다. 이 키를 사용하는 데 드는 비용은 없습니다. 예를 들어 다른 AWS 계정에서 보안 암호에 액세스하기 위해 자체 고객 관리형 키를 사용할 수도 있습니다. 고객 관리형 키 사용 비용에 대한 자세한 내용은 요금을 참조하세요.

    4. 다음을 선택합니다.

  4. 보안 암호 유형 선택(Choose secret type) 페이지에서 다음을 수행합니다.

    1. 설명이 포함된 Secret name(보안 암호 이름)과 Description(설명)을 입력합니다.

    2. 리소스 권한(Resource permissions)에서 권한 편집(Edit permissions)을 선택합니다. 암호를 검색할 수 있는 다음 정책을 붙여넣은 다음 [Save] 를 선택합니다. RoleToRetrieveSecretAtRuntime

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountId:role/RoleToRetrieveSecretAtRuntime" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } ] }
    3. 페이지 하단에서 다음(Next)을 선택합니다.

  5. 교체 구성(Configure rotation) 페이지에서 교체를 꺼 둡니다. 다음을 선택합니다.

  6. Review(검토) 페이지에서 보안 암호 세부 정보를 검토한 후 Store(저장)를 선택합니다.

2단계: 코드 업데이트

코드가 IAM 역할을 RoleToRetrieveSecretAtRuntime맡아야 암호를 검색할 수 있습니다. 자세한 내용은 IAM 역할 (AWS API) 로 전환을 참조하십시오.

그런 다음 Secrets Manager에서 제공하는 샘플 코드를 사용하여 Secrets Manager에서 보안 암호를 검색하도록 코드를 업데이트합니다.

샘플 코드 찾기
  1. https://console.aws.amazon.com/secretsmanager/에서 Secrets Manager 콘솔을 엽니다.

  2. 보안 암호(Secrets) 페이지에서 보안 암호를 선택합니다.

  3. 아래로 스크롤하여 샘플 코드(Sample code)로 이동합니다. 프로그래밍 언어를 선택한 다음 코드 조각을 복사합니다.

애플리케이션에서 하드 코딩된 보안 암호를 제거하고 코드 조각을 붙여넣습니다. 코드 언어에 따라 코드 조각의 함수 또는 메서드에 호출을 추가해야 할 수 있습니다.

하드 코딩된 보안 암호 대신 보안 암호를 사용하여 애플리케이션이 예상대로 작동하는지 테스트합니다.

3단계: 보안 암호 업데이트

마지막 단계는 하드 코딩된 보안 암호를 취소하고 업데이트하는 것입니다. 보안 암호의 소스를 참조하여 보안 암호를 취소하고 업데이트하기 위한 지침을 찾습니다. 예를 들어 현재 보안 암호를 비활성화하고 새 보안 암호를 생성해야 할 수 있습니다.

보안 암호를 새 값으로 업데이트
  1. https://console.aws.amazon.com/secretsmanager/에서 Secrets Manager 콘솔을 엽니다.

  2. 보안 암호(Secrets)를 선택한 다음 보안 암호를 선택합니다.

  3. 보안 암호 세부 정보(Secret details) 페이지에서 아래로 스크롤하여 보안 암호 값 검색(Retrieve secret value)을 선택한 다음 편집(Edit)을 선택합니다.

  4. 보안 암호를 업데이트 한 다음 저장(Save)을 선택합니다.

그 다음, 새 보안 암호로 애플리케이션이 예상대로 작동하는지 테스트합니다.

다음 단계

코드에서 하드 코딩된 보안 암호를 제거한 후에는 다음과 같은 몇 가지 아이디어를 고려해 볼 수 있습니다.

  • Java 및 Python 애플리케이션에서 하드코딩된 보안 정보를 찾으려면 Amazon CodeGuru Reviewer를 사용하는 것이 좋습니다.

  • 보안 암호를 캐싱하여 성능을 개선하고 비용을 절감할 수 있습니다. 자세한 정보는 에서 비밀 가져오기 AWS Secrets Manager 섹션을 참조하세요.

  • 여러 리전에서 액세스하는 보안 암호의 경우 지연 시간을 개선하기 위해 보안 암호를 복제하는 것을 고려해 보세요. 자세한 정보는 지역 간 AWS Secrets Manager 비밀 복제을 참조하세요.

  • 이 자습서에서는 보안 값을 검색할 수 있는 RoleToRetrieveSecretAtRuntime권한만 부여했습니다. 역할에 추가 권한(예: 보안 암호에 대한 메타데이터를 가져오거나 보안 암호 목록 보기)을 부여하려면 에 대한 권한 정책 예제 AWS Secrets Manager 섹션을 참조하세요.

  • 이 자습서에서는 시크릿의 리소스 정책을 RoleToRetrieveSecretAtRuntime사용하여 권한을 부여했습니다. 권한을 부여하는 다른 방법은 자격 증명에 권한 정책 연결 섹션을 참조하세요.