GitHub 작업에서 AWS Secrets Manager 보안 암호 사용 - AWS Secrets Manager

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

GitHub 작업에서 AWS Secrets Manager 보안 암호 사용

GitHub 작업에서 보안 암호를 사용하려면 GitHub 작업을 사용하여 AWS Secrets Manager에서 보안 암호를 검색한 후 GitHub 워크플로에 마스킹된 환경 변수로 추가할 수 있습니다. GitHub 작업에 대한 자세한 내용은 GitHub 문서GitHub 작업 이해를 참조하세요.

GitHub 환경에 보안 암호를 추가하면 GitHub 작업의 다른 모든 단계에서 보안 암호를 사용할 수 있습니다. GitHub 작업에 대한 보안 강화의 지침에 따라 환경 내에서 보안 암호가 잘못 사용되는 것을 방지하세요.

보안 암호 값의 전체 문자열을 환경 변수 값으로 설정하거나 문자열이 JSON인 경우 JSON을 구문 분석하여 각 JSON 키-값 쌍에 대한 개별 환경 변수를 설정할 수 있습니다. 보안 암호 값이 이진수인 경우 이 작업을 수행하면 보안 암호 값이 문자열로 변환됩니다.

보안 암호에서 생성된 환경 변수를 보려면 디버그 로깅을 켜세요. 자세한 내용은 GitHub 문서디버그 로깅 활성화를 참조하세요.

보안 암호에서 생성된 환경 변수를 사용하려면 GitHub 문서에서 환경 변수를 참조하세요.

사전 조건

이 작업을 사용하려면 먼저 AWS 보안 인증을 구성하고 configure-aws-credentials 단계를 사용하여 GitHub 환경에서 AWS 리전을 설정해야 합니다. GitHub OIDC 공급자를 사용하여 역할을 직접 수임하려면 GitHub 작업을 위한 AWS 보안 인증 작업 구성의 지침을 따르세요. 그려면 수명이 짧은 보안 인증을 사용할 수 있으므로 Secrets Manager 외부에 추가 액세스 키를 저장하지 않아도 됩니다.

작업에서 맡는 IAM 역할은 다음과 같은 권한이 있어야 합니다.

  • 검색하려는 보안 암호에 대한 GetSecretValue

  • 모든 보안 암호에 대한 ListSecrets

  • (선택 사항) 고객 관리형 키로 보안 암호를 암호화하는 경우 KMS key에 대한 Decrypt

자세한 내용은 에 대한 인증 및 액세스 제어 AWS Secrets Manager 단원을 참조하십시오.

사용량

작업을 사용하려면 워크플로에 다음 구문을 사용하는 단계를 추가하세요.

- name: Step name uses: aws-actions/aws-secretsmanager-get-secrets@v2 with: secret-ids: | secretId1 ENV_VAR_NAME, secretId2 name-transformation: (Optional) uppercase|lowercase|none parse-json-secrets: (Optional) true|false
파라미터
secret-ids

보안 암호 ARNS, 이름 및 이름 접두사.

환경 변수 이름을 설정하려면 보안 암호 ID 앞에 환경 변수 이름을 입력한 다음 쉼표를 입력합니다. 예를 들어 ENV_VAR_1, secretId는 보안 암호 secretId에서 ENV_VAR_1이라는 환경 변수를 생성합니다. 환경 변수 이름은 대문자, 숫자, 밑줄로 구성될 수 있습니다.

접두사를 사용하려면 3자 이상을 입력하고 그 뒤에 별표를 붙입니다. 예를 들어 dev*는 모든 보안 암호를 dev로 시작하는 이름과 일치시킵니다. 검색할 수 있는 일치하는 보안 암호의 최대 개수는 100개입니다. 변수 이름을 설정하고 접두사가 여러 보안 암호와 일치하는 경우 작업이 실패합니다.

name-transformation

기본적으로 이 단계에서는 보안 암호 이름에서 각 환경 변수 이름을 생성하며, 이름은 대문자, 숫자 및 밑줄만 포함하고 숫자로 시작되지 않도록 변환됩니다. 이름에 있는 문자의 경우, lowercase를 활용하여 소문자를 사용하도록 단계를 구성하거나, none를 활용하여 문자의 대소문자를 변경하지 않도록 할 수 있습니다. 기본값은 uppercase입니다.

parse-json-secrets

(선택 사항) 기본적으로 이 작업에서는 환경 변수 값을 보안 암호 값의 전체 JSON 문자열로 설정합니다. JSON에 있는 각 키-값 쌍의 환경 변수를 생성하려면 parse-json-secretstrue로 설정합니다.

JSON에서 “name” 및 “Name”과 같이 대소문자를 구분하는 키를 사용하는 경우 이 작업에서는 중복 이름 충돌이 발생합니다. 이 경우 parse-json-secretsfalse로 설정하고 JSON 보안 암호 값을 별도로 구문 분석합니다.

환경 변수 이름 지정

작업에 의해 생성된 환경 변수의 이름은 해당 변수의 보안 암호와 동일하게 지정됩니다. 환경 변수는 보안 암호보다 이름 지정 요구 사항이 더 엄격하므로, 작업을 수행하면 보안 암호 이름이 해당 요구 사항에 맞게 변환됩니다. 예를 들어 이 작업을 수행하면 소문자가 대문자로 변환됩니다. 보안 암호의 JSON을 구문 분석할 경우, 환경 변수 이름에는 보안 암호 이름과 JSON 키 이름(예: MYSECRET_KEYNAME)이 모두 포함됩니다. 소문자를 변환하지 않도록 작업을 구성할 수 있습니다.

두 환경 변수의 이름이 같으면 작업이 실패하게 됩니다. 이러한 경우, 환경 변수에 사용할 이름을 별칭으로 지정해야 합니다.

이름이 충돌할 수 있는 경우의 예:

  • 이름이 ‘MySecret’인 보안 암호와 ‘mysecret’인 보안 암호는 둘 다 ‘MYSECRET’이라는 환경 변수가 됩니다.

  • 이름이 ‘Secret_keyname’인 보안 암호와 ‘keyname’이라는 키가 포함된 ‘Secret’이라는 JSON 구문 분석 암호는 둘 다 ‘SECRET_KEYNAME’이라는 환경 변수가 됩니다.

다음 예제와 같이 별칭을 지정하여 환경 변수 이름을 설정할 수 있습니다. 그러면 ENV_VAR_NAME이라는 변수가 생성됩니다.

secret-ids: | ENV_VAR_NAME, secretId2
빈 별칭
  • parse-json-secrets: true를 설정하고 빈 별칭을 입력한 다음 쉼표와 보안 암호 ID를 입력할 경우, 이 작업으로 인해 환경 변수의 이름은 구문 분석된 JSON 키와 동일하게 지정됩니다. 변수 이름에는 보안 암호 이름이 포함되지 않습니다.

    보안 암호에 유효한 JSON이 포함되어 있지 않은 경우 작업은 하나의 환경 변수를 생성하고, 환경 변수의 이름을 보안 암호 이름과 동일하게 지정합니다.

  • parse-json-secrets: false를 설정하고 빈 별칭을 입력한 다음 쉼표와 보안 암호 ID를 입력할 경우, 이 작업은 환경 변수의 이름을 별칭을 지정하지 않은 것처럼 지정합니다.

다음 예제는 빈 별칭을 보여줍니다.

,secret2

예시

예 1 이름 및 ARN으로 보안 암호 가져오기

다음 예제에서는 이름 및 ARN으로 식별된 보안 암호에 대한 환경 변수를 생성합니다.

- name: Get secrets by name and by ARN uses: aws-actions/aws-secretsmanager-get-secrets@v2 with: secret-ids: | exampleSecretName arn:aws:secretsmanager:us-east-2:123456789012:secret:test1-a1b2c3 0/test/secret /prod/example/secret SECRET_ALIAS_1,test/secret SECRET_ALIAS_2,arn:aws:secretsmanager:us-east-2:123456789012:secret:test2-a1b2c3 ,secret2

생성된 환경 변수:

EXAMPLESECRETNAME: secretValue1 TEST1: secretValue2 _0_TEST_SECRET: secretValue3 _PROD_EXAMPLE_SECRET: secretValue4 SECRET_ALIAS_1: secretValue5 SECRET_ALIAS_2: secretValue6 SECRET2: secretValue7
예 2 접두사로 시작하는 모든 보안 암호 가져오기

다음 예제에서는 beta로 시작하는 이름을 가진 모든 보안 암호에 대한 환경 변수를 생성합니다.

- name: Get Secret Names by Prefix uses: 2 with: secret-ids: | beta* # Retrieves all secrets that start with 'beta'

생성된 환경 변수:

BETASECRETNAME: secretValue1 BETATEST: secretValue2 BETA_NEWSECRET: secretValue3
예 3 보안 암호에서 JSON 구문 분석

다음 예제에서는 보안 암호에서 JSON을 구문 분석하여 환경 변수를 생성합니다.

- name: Get Secrets by Name and by ARN uses: aws-actions/aws-secretsmanager-get-secrets@v2 with: secret-ids: | test/secret ,secret2 parse-json-secrets: true

test/secret 보안 암호의 보안 암호 값은 다음과 같습니다.

{ "api_user": "user", "api_key": "key", "config": { "active": "true" } }

secret2 보안 암호의 보안 암호 값은 다음과 같습니다.

{ "myusername": "alejandro_rosalez", "mypassword": "EXAMPLE_PASSWORD" }

생성된 환경 변수:

TEST_SECRET_API_USER: "user" TEST_SECRET_API_KEY: "key" TEST_SECRET_CONFIG_ACTIVE: "true" MYUSERNAME: "alejandro_rosalez" MYPASSWORD: "EXAMPLE_PASSWORD"
예 환경 변수 이름에 4가지 소문자 사용

다음 예제에서는 소문자 이름을 사용하여 환경 변수를 생성합니다.

- name: Get secrets uses: aws-actions/aws-secretsmanager-get-secrets@v2 with: secret-ids: exampleSecretName name-transformation: lowercase

생성된 환경 변수:

examplesecretname: secretValue