

지원 종료 공지: 2026년 10월 7일에는에 대한 지원을 중단할 AWS 예정입니다 AWS IoT Greengrass Version 1. 2026년 10월 7일 이후에는 더 이상 AWS IoT Greengrass V1 리소스에 액세스할 수 없습니다. 자세한 내용은 [에서 마이그레이션 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)을 참조하세요.

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

# AWS IoT Greengrass 코어에 보안 암호 배포
<a name="secrets"></a>

이 기능은 AWS IoT Greengrass 코어 v1.7 이상에서 사용할 수 있습니다.

AWS IoT Greengrass 를 사용하면 암호, 토큰 또는 기타 보안 암호의 하드 코딩 없이 Greengrass 디바이스의 서비스 및 애플리케이션으로 인증할 수 있습니다.

AWS Secrets Manager 는 클라우드에서 보안 암호를 안전하게 저장하고 관리하는 데 사용할 수 있는 서비스입니다. AWS IoT Greengrass 는 Secrets Manager를 Greengrass 코어 디바이스로 확장하므로 [커넥터](connectors.md)와 Lambda 함수가 로컬 보안 암호를 사용하여 서비스 및 애플리케이션과 상호 작용할 수 있습니다. 예를 들어, Twilio 알림 커넥터는 로컬로 저장된 인증 토큰을 사용합니다.

보안 암호를 Greengrass 그룹에 통합하려면 Secrets Manager 보안 암호를 참조하는 그룹 리소스를 생성합니다. 이 *암호 리소스*는 ARN을 통해 클라우드 암호를 참조합니다. 암호 리소스의 생성, 관리, 사용 방법을 알아보려면 [암호 리소스 작업](secrets-using.md)을 참조하십시오.

AWS IoT Greengrass 는 전송 중 및 저장 시 보안 암호를 암호화합니다. 그룹 배포 중에는 Secrets Manager에서 보안 암호를 AWS IoT Greengrass 가져오고 Greengrass 코어에 암호화된 로컬 복사본을 생성합니다. Secrets Manager에서 클라우드 암호를 교체한 후 그룹을 다시 배포하여 업데이트된 값을 코어에 전파합니다.

다음 다이어그램에서는 암호를 코어에 배포하는 프로세스를 자세히 보여줍니다. 암호는 전송 및 저장 상태에서 암호화됩니다.

![AWS IoT Greengrass 는에서 보안 암호를 가져 AWS Secrets Manager 와 코어 디바이스에 보안 암호 리소스로 배포합니다.이 리소스는 커넥터 및 Lambda 함수에서 사용할 수 있습니다.](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/deploy-local-secret.png)


 AWS IoT Greengrass 를 사용하여 보안 암호를 로컬에 저장하면 다음과 같은 이점이 있습니다.
+ **코드에서 분리됨(하드 코딩되지 않음).** 중앙에서 관리되는 자격 증명을 지원하며 민감한 데이터를 손상 위험으로부터 보호할 수 있습니다.
+ **오프라인 시나리오에 사용할 수 있습니다.** 인터넷 연결이 끊어진 상태에서 커넥터와 함수가 로컬 서비스 및 소프트웨어에 안전하게 액세스할 수 있습니다.
+ **암호에 제어된 액세스.** 그룹에서 승인된 커넥터와 함수만 암호에 액세스할 수 있습니다. AWS IoT Greengrass 는 프라이빗 키 암호화를 사용하여 암호를 보호합니다. 암호는 전송 및 저장 상태에서 암호화됩니다. 자세한 내용은 [암호 암호화](#secrets-encryption) 단원을 참조하십시오.
+ **제어된 회전.** Secrets Manager에서 암호를 교체한 후 Greengrass 그룹을 다시 배포하여 암호의 로컬 사본을 업데이트합니다. 자세한 내용은 [보안 암호 생성 및 관리](secrets-using.md#secrets-create-manage) 단원을 참조하십시오.
**중요**  
AWS IoT Greengrass 는 클라우드 버전이 교체된 후 로컬 보안 암호의 값을 자동으로 업데이트하지 않습니다. 로컬 값을 업데이트하려면 그룹을 다시 배포해야 합니다.

## 암호 암호화
<a name="secrets-encryption"></a>

AWS IoT Greengrass 는 전송 중 및 저장 시 보안 암호를 암호화합니다.

**중요**  
사용자 정의한 Lambda 함수에서 보안 암호를 안전하게 취급해야 하고, 보안 암호에 저장된 기밀 데이터를 로그에 기록하지 말아야 합니다. 자세한 내용은 *AWS Secrets Manager 사용 설명서*의 [Lambda 함수 로깅 및 디버깅의 위험 완화](https://docs.aws.amazon.com/secretsmanager/latest/userguide/best-practices.html#best-practice_lamda-debug-statements)를 참조하십시오. 이 설명서에서는 특별히 교체 기능을 언급하지만 권장 사항은 Greengrass Lambda 함수에도 적용됩니다.

**전송 중 데이터 암호화**  
AWS IoT Greengrass 는 TLS(전송 계층 보안)를 사용하여 인터넷 및 로컬 네트워크를 통한 모든 통신을 암호화합니다. 그러면 Secrets Manager에서 암호를 검색하여 코어에 배포하는 과정에서 전송 중인 암호가 보호됩니다. 지원되는 TLS 암호 그룹은 [TLS 암호 그룹 지원](gg-sec.md#gg-cipher-suites) 섹션을 참조하십시오.

**저장된 데이터 암호화**  
AWS IoT Greengrass 는 코어에 저장된 보안 암호의 암호화를 [`config.json`](gg-core.md#config-json) 위해에 지정된 프라이빗 키를 사용합니다. 이 때문에 로컬 암호를 보호하려면 프라이빗 키의 보안 스토리지가 필요합니다. AWS [ 공동 책임 모델에서](https://aws.amazon.com/compliance/shared-responsibility-model/)는 코어 디바이스에 프라이빗 키를 안전하게 저장하는 것이 고객의 책임입니다.  
AWS IoT Greengrass 는 두 가지 프라이빗 키 스토리지 모드를 지원합니다.  
+ 하드웨어 보안 모듈 사용 자세한 내용은 [하드웨어 보안 통합](hardware-security.md) 단원을 참조하십시오.
**참고**  
현재는 하드웨어 기반 프라이빗 키를 사용할 때 로컬 보안 암호의 암호화 및 복호화를 위한 [PKCS\#1 v1.5](https://tools.ietf.org/html/rfc2313) 패딩 메커니즘만 AWS IoT Greengrass 지원합니다. 공급업체에서 제공한 지침에 따라 하드웨어 기반 프라이빗 키를 수동으로 생성하는 경우 PKCS\#1 v1.5를 선택해야 합니다. AWS IoT Greengrass Optimal Asymmetric Encryption Padding(OAEP)을 지원하지 않습니다.
+ 파일 시스템 권한 사용(기본값)
프라이빗 키는 로컬 암호를 암호화하는 데 사용되는 데이터 키를 보호하는 데 사용됩니다. 데이터 키는 각 그룹 배포로 교체됩니다.  
 AWS IoT Greengrass 코어는 프라이빗 키에 액세스할 수 있는 유일한 엔터티입니다. 암호 리소스와 연계된 Greengrass 커넥터 또는 Lambda 함수는 코어에서 암호의 값을 가져옵니다.

## 요구 사항
<a name="secrets-reqs"></a>

로컬 암호 지원을 위한 요구 사항은 다음과 같습니다.
+  AWS IoT Greengrass 코어 v1.7 이상을 사용해야 합니다.
+ 로컬 보안 암호의 값을 가져오려면 사용자 정의 Lambda 함수가 AWS IoT Greengrass 코어 SDK v1.3.0 이상을 사용해야 합니다.
+ 로컬 암호 암호화에 사용되는 프라이빗 키를 Greengrass 구성 파일에서 지정해야 합니다. 기본적으로는 파일 시스템에 저장된 코어 프라이빗 키를 AWS IoT Greengrass 사용합니다. 사용자 본인의 프라이빗 키를 제공하려면 [암호 암호화를 위한 프라이빗 키 지정](#secrets-config-private-key) 섹션을 참조하십시오. RSA 키 유형만 지원됩니다.
**참고**  
현재는 하드웨어 기반 프라이빗 키를 사용할 때 로컬 보안 암호의 암호화 및 복호화를 위한 [PKCS\#1 v1.5](https://tools.ietf.org/html/rfc2313) 패딩 메커니즘만 AWS IoT Greengrass 지원합니다. 공급업체에서 제공한 지침에 따라 하드웨어 기반 프라이빗 키를 수동으로 생성하는 경우 PKCS\#1 v1.5를 선택해야 합니다. AWS IoT Greengrass Optimal Asymmetric Encryption Padding(OAEP)을 지원하지 않습니다.
+ AWS IoT Greengrass 에 보안 암호 값을 가져올 수 있는 권한이 부여되어야 합니다. 이렇게 AWS IoT Greengrass 하면가 그룹 배포 중에 값을 가져올 수 있습니다. 기본 Greengrass 서비스 역할을 사용하는 경우는 AWS IoT Greengrass 이미 *이름이 greengrass-*로 시작하는 보안 암호에 액세스할 수 있습니다. 액세스를 사용자 지정하려면 [AWS IoT Greengrass 가 보안 암호 값을 가져오도록 허용](#secrets-config-service-role)을 참조하십시오.
**참고**  
권한을 사용자 지정하더라도이 이름 지정 규칙을 사용하여에 액세스할 AWS IoT Greengrass 수 있는 보안 암호를 식별하는 것이 좋습니다. 콘솔은 다른 권한을 사용하여 보안 암호를 읽으므로 콘솔에서 가져올 권한이 AWS IoT Greengrass 없는 보안 암호를 선택할 수 있습니다. 명명 규칙을 사용하면 배포 오류가 발생하는 권한 충돌을 방지할 수 있습니다.

## 암호 암호화를 위한 프라이빗 키 지정
<a name="secrets-config-private-key"></a>

이 절차에서는 로컬 보안 암호화에 사용되는 프라이빗 키의 경로를 제공합니다. 이는 최소 2048비트 길이의 RSA 키여야 합니다. AWS IoT Greengrass 코어에 사용되는 프라이빗 키에 대한 자세한 내용은 섹션을 참조하세요[AWS IoT Greengrass 코어 보안 주체](gg-sec.md#gg-principals).

AWS IoT Greengrass 는 하드웨어 기반 또는 파일 시스템 기반(기본값)의 두 가지 프라이빗 키 스토리지 모드를 지원합니다. 자세한 내용은 [암호 암호화](#secrets-encryption) 단원을 참조하십시오.

파일 시스템에서 코어 프라이빗 키를 사용하는 기본 구성을 변경하려는 경우에만 **이 절차를 따르십시오**. 이 단계는 시작하기 저습서의 [모듈 2](module2.md)에 설명된 대로 그룹 및 코어를 생성했다는 가정하에 작성되었습니다.

1. `/{{greengrass-root}}/config` 디렉터리에 있는 [`config.json`](gg-core.md#config-json) 파일은 여십시오.
**참고**  
{{greengrass-root}}는 AWS IoT Greengrass 코어 소프트웨어가 디바이스에 설치된 경로를 나타냅니다. 일반적으로 이는 `/greengrass` 디렉터리입니다.

1. `crypto.principals.SecretsManager` 객체에서 `privateKeyPath` 속성에 프라이빗 키의 경로를 입력합니다.
   + 프라이빗 키가 파일 시스템에 저장된 경우 키의 절대 경로를 지정합니다. 예제:

     ```
     "SecretsManager" : {
       "privateKeyPath" : "file:///somepath/{{hash}}.private.key"
     }
     ```
   + 프라이빗 키가 HSM(하드웨어 보안 모듈)에 저장되는 경우, [RFC 7512 PKCS\#11](https://tools.ietf.org/html/rfc7512) URI 체계를 사용해 경로를 지정합니다. 예제:

     ```
     "SecretsManager" : {
       "privateKeyPath" : "pkcs11:object={{private-key-label}};type=private"
     }
     ```

     자세한 내용은 [AWS IoT Greengrass 코어에 대한 하드웨어 보안 구성](hardware-security.md#configure-hardware-security) 단원을 참조하십시오.
**참고**  
현재는 하드웨어 기반 프라이빗 키를 사용할 때 로컬 보안 암호의 암호화 및 복호화를 위한 [PKCS\#1 v1.5](https://tools.ietf.org/html/rfc2313) 패딩 메커니즘만 AWS IoT Greengrass 지원합니다. 공급업체에서 제공한 지침에 따라 하드웨어 기반 프라이빗 키를 수동으로 생성하는 경우 PKCS\#1 v1.5를 선택해야 합니다. AWS IoT Greengrass Optimal Asymmetric Encryption Padding(OAEP)을 지원하지 않습니다.

## AWS IoT Greengrass 가 보안 암호 값을 가져오도록 허용
<a name="secrets-config-service-role"></a>

이 절차에서는가 보안 암호 값을 AWS IoT Greengrass 가져오도록 허용하는 인라인 정책을 Greengrass 서비스 역할에 추가합니다.

보안 암호에 AWS IoT Greengrass 사용자 지정 권한을 부여하거나 Greengrass 서비스 역할에 `AWSGreengrassResourceAccessRolePolicy` 관리형 정책이 포함되지 않은 **경우에만이 절차를 따르**세요.는 *이름이 greengrass-*로 시작하는 보안 암호에 대한 액세스 권한을 `AWSGreengrassResourceAccessRolePolicy` 부여합니다.

1. 다음 CLI 명령을 실행해 Greengrass 서비스 역할의 ARN을 가져옵니다.

   ```
   aws greengrass get-service-role-for-account --region {{region}}
   ```

   반환되는 ARN에는 역할 이름이 포함되어 있습니다.

   ```
   {
     "AssociatedAt": "{{time-stamp}}",
     "RoleArn": "arn:aws:iam::{{account-id}}:role/service-role/{{role-name}}"
   }
   ```

   다음 단계에서는 ARN 또는 이름을 사용합니다.

1. `secretsmanager:GetSecretValue` 작업을 허용하는 인라인 정책을 추가합니다. 지침은 *IAM 사용 설명서*의 [IAM 정책 추가 및 제거](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)를 참조하십시오.

   암호를 명시적으로 나열하거나 와일드카드 `*` 이름 지정 체계를 사용하여 세분화된 액세스 권한을 부여하거나 버전이 지정되거나 태그 지정된 암호에 대한 조건부 액세스를 허용할 수 있습니다. 예를 들어 다음 정책은가 지정된 보안 암호만 읽 AWS IoT Greengrass 도록 허용합니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "secretsmanager:GetSecretValue"
               ],
               "Resource": [
               "arn:aws:secretsmanager:{{us-east-1}}:{{123456789012}}:secret:{{greengrass-SecretA-abc}}",
       "arn:aws:secretsmanager:{{us-east-1}}:{{123456789012}}:secret:{{greengrass-SecretB-xyz}}"
               ]
           }
       ]
   }
   ```

------
**참고**  
고객 관리형 AWS KMS 키를 사용하여 보안 암호를 암호화하는 경우 Greengrass 서비스 역할도 `kms:Decrypt` 작업을 허용해야 합니다.

Secrets Manager의 IAM 정책에 대한 자세한 내용은 *AWS Secrets Manager 사용 설명서*의 [AWS Secrets Manager에 대한 인증 및 액세스 제어](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html) 및 [AWS Secrets Manager에 대한 IAM 정책 또는 보안 정책에서 사용할 수 있는 작업, 리소스 및 컨텍스트 키](https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html)를 참조하십시오.

## 다음 사항도 참조하세요.
<a name="secrets-seealso"></a>
+ [란 무엇입니까 AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) *AWS Secrets Manager 사용 설명서*의
+ [PKCS \#1: RSA 암호화 버전1.5](https://tools.ietf.org/html/rfc2313)