

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

# GitHub 작업에서 AWS Secrets Manager 보안 암호 사용
<a name="retrieving-secrets_github"></a>

GitHub 작업에서 보안 암호를 사용하려면 GitHub 작업을 사용하여에서 보안 암호를 검색 AWS Secrets Manager 하고 GitHub 워크플로에서 마스킹된 [환경 변수](https://docs.github.com/en/actions/learn-github-actions/environment-variables)로 추가할 수 있습니다. GitHub 작업에 대한 자세한 내용은 *GitHub 문서*의 [GitHub 작업 이해](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions)를 참조하세요.

GitHub 환경에 보안 암호를 추가하면 GitHub 작업의 다른 모든 단계에서 보안 암호를 사용할 수 있습니다. [GitHub 작업에 대한 보안 강화](https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions)의 지침에 따라 환경 내에서 보안 암호가 잘못 사용되는 것을 방지하세요.

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

보안 암호에서 생성된 환경 변수를 보려면 디버그 로깅을 켜세요. 자세한 내용은 *GitHub 문서*의 [디버그 로깅 활성화](https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging)를 참조하세요.

보안 암호에서 생성된 환경 변수를 사용하려면 *GitHub 문서*에서 [환경 변수](https://docs.github.com/en/actions/learn-github-actions/environment-variables)를 참조하세요.

## 사전 조건
<a name="retrieving-secrets_github_prereq"></a>

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

작업에서 맡는 IAM 역할은 다음과 같은 권한이 있어야 합니다.
+ 검색하려는 보안 암호에 대한 `GetSecretValue`
+ 모든 보안 암호에 대한 `ListSecrets`
+ (선택 사항) 보안 암호가 로 암호화된 KMS key 경우 `Decrypt`의 고객 관리형 키.

자세한 내용은 [에 대한 인증 및 액세스 제어 AWS Secrets Manager](auth-and-access.md) 단원을 참조하십시오.

## 사용법
<a name="retrieving-secrets_github_usage"></a>

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

```
- 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
```Parameters

`secret-ids`  
보안 암호 ARNS, 이름 및 이름 접두사.  
환경 변수 이름을 설정하려면 보안 암호 ID 앞에 환경 변수 이름을 입력한 다음 쉼표를 입력합니다. 예를 들어 `ENV_VAR_1, secretId`는 보안 암호 `secretId`에서 **ENV\$1VAR\$11**이라는 환경 변수를 생성합니다. 환경 변수 이름은 대문자, 숫자, 밑줄로 구성될 수 있습니다.  
접두사를 사용하려면 3자 이상을 입력하고 그 뒤에 별표를 붙입니다. 예를 들어 `dev*`는 모든 보안 암호를 **dev**로 시작하는 이름과 일치시킵니다. 검색할 수 있는 일치하는 보안 암호의 최대 개수는 100개입니다. 변수 이름을 설정하고 접두사가 여러 보안 암호와 일치하는 경우 작업이 실패합니다.

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

`parse-json-secrets`  
(선택 사항) 기본적으로 이 작업에서는 환경 변수 값을 보안 암호 값의 전체 JSON 문자열로 설정합니다. JSON에 있는 각 키-값 쌍의 환경 변수를 생성하려면 `parse-json-secrets`를 `true`로 설정합니다.  
JSON에서 “name” 및 “Name”과 같이 대소문자를 구분하는 키를 사용하는 경우 이 작업에서는 중복 이름 충돌이 발생합니다. 이 경우 `parse-json-secrets`를 `false`로 설정하고 JSON 보안 암호 값을 별도로 구문 분석합니다.

## 환경 변수 이름 지정
<a name="retrieving-secrets_github_alias"></a>

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

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

이름이 충돌할 수 있는 경우의 예:
+ 이름이 ‘MySecret’인 보안 암호와 ‘mysecret’인 보안 암호는 둘 다 ‘MYSECRET’이라는 환경 변수가 됩니다.
+ 이름이 ‘Secret\$1keyname’인 보안 암호와 ‘keyname’이라는 키가 포함된 ‘Secret’이라는 JSON 구문 분석 암호는 둘 다 ‘SECRET\$1KEYNAME’이라는 환경 변수가 됩니다.

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

```
secret-ids: |
  ENV_VAR_NAME, secretId2
```

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

  보안 암호에 유효한 JSON이 포함되어 있지 않은 경우 작업은 하나의 환경 변수를 생성하고, 환경 변수의 이름을 보안 암호 이름과 동일하게 지정합니다.
+ `parse-json-secrets: false`를 설정하고 빈 별칭을 입력한 다음 쉼표와 보안 암호 ID를 입력할 경우, 이 작업은 환경 변수의 이름을 별칭을 지정하지 않은 것처럼 지정합니다.

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

```
,secret2
```

## 예제
<a name="retrieving-secrets_github_examples"></a>

**Example 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
```

**Example 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
```

**Example 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"
```

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

```
- name: Get secrets
  uses: aws-actions/aws-secretsmanager-get-secrets@v2
  with:
    secret-ids: exampleSecretName
    name-transformation: lowercase
```
생성된 환경 변수:  

```
examplesecretname: secretValue
```