

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

# IDT 테스트를 실행하도록 장치 구성
<a name="device-config-setup"></a>

IDT에서 디바이스 자격 검증을 위한 테스트를 실행되도록 하려면 디바이스에 액세스하도록 호스트 컴퓨터를 구성하고 디바이스에 대한 사용자 권한을 구성해야 합니다.

## 호스트 컴퓨터의 Java 설치
<a name="install-java-for-idt"></a>

IDT v4.2.0부터에 대한 선택적 검증 테스트를 실행하려면 Java가 AWS IoT Greengrass 필요합니다.

Java 버전 8 이상을 사용할 수 있습니다. [Amazon Corretto](https://aws.amazon.com/corretto/) 또는 [OpenJDK](https://openjdk.java.net/) 장기 지원 버전을 사용하는 것이 좋습니다. 버전 8 이상이 필요합니다.

## 테스트 대상 장치에 액세스하도록 호스트 컴퓨터 구성
<a name="configure-host"></a>

IDT는 호스트 컴퓨터에서 실행되며, SSH를 사용하여 장치에 연결할 수 있어야 합니다. IDT가 테스트 대상 장치에 대한 SSH 액세스를 획득하도록 허용하는 옵션은 두 가지가 있습니다.

1. 여기에서 설명하는 지침에 따라 SSH 키 페어를 생성하고 해당 키가 암호를 지정하지 않고 테스트 대상 장치에 로그인할 수 있도록 권한을 부여합니다.

1. `device.json` 파일의 각 장치에 사용자 이름 및 암호를 제공합니다. 자세한 내용은 [device.json 구성](set-config.md#device-config) 단원을 참조하십시오.

임의의 SSL 구현을 사용하여 SSH 키를 생성할 수 있습니다. 다음 지침은 [SSH-KEYGEN](https://www.ssh.com/ssh/keygen/) 또는 [ PuTTYgen](https://www.ssh.com/ssh/putty/windows/puttygen)(Windows)을 사용하는 방법을 보여줍니다. 다른 SSL 구현을 사용 중인 경우 해당 구현에 대한 설명서를 참조하십시오.

IDT는 SSH 키를 사용하여 테스트 대상 장치에 인증합니다.

**SSH-KEYGEN을 사용하여 SSH 키를 생성하려면**

1. SSH 키를 생성합니다,

   공개 SSH **ssh-keygen** 명령을 사용하여 SSH 키 페어를 생성할 수 있습니다. 이미 호스트 컴퓨터에 SSH 키 페어가 있는 경우 IDT 전용 SSH 키 페어를 생성하는 것이 가장 좋습니다. 그러면 테스트를 완료한 후 호스트 컴퓨터가 더 이상 암호 없이 장치에 연결할 수 없습니다. 또한 원하는 사용자만 원격 장치에 액세스할 수 있도록 제한할 수 있습니다.
**참고**  
Windows에는 SSH 클라이언트가 설치되어 있지 않습니다. Windows에 SSH 클라이언트 설치에 대한 내용은 [SSH 클라이언트 소프트웨어](https://www.ssh.com/ssh/#sec-Download-client-software) 다운로드를 참조하십시오.

   **ssh-keygen** 명령은 키 페어 저장 이름과 경로를 입력하라는 메시지를 표시합니다. 기본적으로 키 페어 파일은 `id_rsa`(프라이빗 키) 및 `id_rsa.pub`(퍼블릭 키)로 이름 지정됩니다. macOS와 Linux에서 이러한 파일의 기본 위치는 `~/.ssh/`입니다. Windows에서 기본 위치는 `C:\Users\<user-name>\.ssh`입니다.

   메시지가 표시되면 SSH 키를 보호하기 위한 키 구문을 입력합니다. 자세한 내용은 [새 SSH 키 생성](https://www.ssh.com/ssh/keygen/)을 참조하십시오.

1. 테스트 대상 장치에 권한 있는 SSH 키를 추가합니다,

   IDT는 SSH 프라이빗 키를 사용하여 테스트 대상 장치에 로그인해야 합니다. 테스트 대상 장치에 로그인하도록 SSH 프라이빗 키를 승인하려면 호스트 컴퓨터의 **ssh-copy-id** 명령을 사용합니다. 이 명령은 테스트 대상 장치에서 `~/.ssh/authorized_keys` 파일에 퍼블릭 키를 추가합니다. 예제:

   **\$1 ssh-copy-id *<remote-ssh-user>*@*<remote-device-ip>***

   여기서 *remote-ssh-user*는 테스트 대상 장치에 로그인하는 데 사용하는 사용자 이름이고, *remote-device-ip*는 테스트를 실행할 테스트 대상 장치의 IP 주소입니다. 예제:

   **ssh-copy-id pi@192.168.1.5**

   메시지가 표시되면 **ssh-copy-id** 명령에서 지정한 사용자 이름에 대한 암호를 입력합니다.

   **ssh-copy-id**는 퍼블릭 키가 `id_rsa.pub`로 이름 지정되고 기본 위치에 저장된다고 가정합니다(macOS와 Linux에서는 `~/.ssh/`, Windows에서는 `C:\Users\<user-name>\.ssh`) 퍼블릭 키의 이름을 다르게 지정하거나 다른 위치에 저장한 경우, **ssh-copy-id**에 **-i** 옵션을 사용하여 SSH 퍼블릭 키의 정규화된 경로를 지정해야 합니다(예: **ssh-copy-id -i \$1/my/path/myKey.pub**). SSH 키 생성 및 퍼블릭 키 복사에 대한 자세한 내용은 [SSH-COPY-ID](https://www.ssh.com/ssh/copy-id)를 참조하십시오.

**PuTTYgen을 사용하여 SSH 키를 생성하려면(Windows만 해당)**

1. 테스트 대상 장치에 OpenSSH 서버 및 클라이언트가 설치되어 있는지 확인합니다. 자세한 내용은 [OpenSSH](https://www.openssh.com/)를 참조하십시오.

1. 테스트 대상 장치에 [PuTTYgen](https://www.puttygen.com/)을 설치합니다.

1. PuTTYgen을 엽니다.

1. **생성**을 선택하고 마우스를 상자 안으로 이동하여 프라이빗 키를 생성합니다.

1. **Conversions(변환)** 메뉴에서 **Export OpenSSH key(OpenSSH 키 내보내기)**를 선택하고 프라이빗 키를 `.pem` 파일 확장명으로 저장합니다.

1. 테스트 대상 장치에서 `/home/<user>/.ssh/authorized_keys` 파일에 퍼블릭 키를 추가합니다.

   1. PuTTYgen 창에서 퍼블릭 키 텍스트를 복사합니다.

   1. PuTTY를 사용하여 테스트 대상 장치에서 세션을 생성합니다.

      1. 명령 프롬프트 또는 Windows Powershell 창에서 다음 명령을 실행합니다.

          **C:/*<path-to-putty>*/putty.exe -ssh *<user>*@*<dut-ip-address>* ** 

      1. 메시지가 표시되면 장치의 암호를 입력합니다.

      1. vi 또는 다른 텍스트 편집기를 사용하여 테스트 대상 장치의 `/home/<user>/.ssh/authorized_keys` 파일에 퍼블릭 키를 추가합니다.

1. 각 테스트 대상 장치에 대해 사용자 이름, IP 주소, 방금 호스트 컴퓨터에 저장한 프라이빗 키 파일의 경로로 `device.json` 파일을 업데이트합니다. 자세한 내용은 [device.json 구성](set-config.md#device-config) 단원을 참조하십시오. 프라이빗 키에 전체 경로 및 파일 이름을 제공하고 슬래시('/')를 사용해야 합니다. 예를 들어 Windows 경로 `C:\DT\privatekey.pem`의 경우 `device.json` 파일에 `C:/DT/privatekey.pem`을 사용합니다.

## Windows 디바이스에 대한 사용자 자격 증명 구성
<a name="configure-windows-user-for-idt"></a>

Windows 기반 디바이스를 검증하려면 다음 사용자에 대해 테스트 중인 디바이스의 LocalSystem 계정에서 사용자 자격 증명을 구성해야 합니다.
+ 기본 Greengrass 사용자(`ggc_user`).
+ 테스트 중인 디바이스에 연결하는 데 사용하는 사용자입니다. [`device.json` 파일](set-config.md#device-config)에서 이 사용자를 구성합니다.

테스트 중인 디바이스의 LocalSystem 계정에서 각 사용자를 생성한 다음에 사용자의 사용자 이름과 암호를 LocalSystem 계정의 Credential Manager 인스턴스에 저장해야 합니다.<a name="set-up-windows-device-environment-procedure"></a>

**Windows 디바이스에서 사용자를 구성하는 방법**

1. 관리자 권한으로 Windows 명령 프롬프트(`cmd.exe`)를 엽니다.

1. Windows 디바이스의 LocalSystem 계정에서 사용자를 생성합니다. 생성하려는 각 사용자에 대해 다음 명령을 실행합니다. 기본 Greengrass 사용자의 경우 *user-name*을 `ggc_user`로 바꿉니다. *암호*를 안전한 암호로 바꿉니다.

   ```
   net user /add user-name password
   ```

1. Microsoft에서 [PsExec 유틸리티](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec)를 다운로드하여 디바이스에 설치합니다.

1. PsExec 유틸리티를 사용하여 기본 사용자의 사용자 이름과 암호를 LocalSystem 계정의 Credential Manager 인스턴스에 저장합니다.

   Credential Manager에서 구성하려는 각 사용자에 대해 다음 명령을 실행합니다. 기본 Greengrass 사용자의 경우 *user-name*을 `ggc_user`로 바꿉니다. 이전에 설정한 사용자의 암호로 *암호*를 바꿉니다.

   ```
   psexec -s cmd /c cmdkey /generic:user-name /user:user-name /pass:password
   ```

   **PsExec License Agreement**가 열리면 **Accept**를 선택하여 라이선스에 동의하고 명령을 실행합니다.
**참고**  
Windows 디바이스에서는 LocalSystem 계정에서 Greengrass nucleus가 실행되며, PsExec 유틸리티를 사용하여 사용자 정보를 LocalSystem 계정에 저장해야 합니다. Credential Manager 애플리케이션을 사용하면 이 정보가 LocalSystem 계정 대신 현재 로그인한 사용자의 Windows 계정에 저장됩니다.

## 장치에서 사용자 권한 구성
<a name="root-access"></a>

IDT는 테스트 대상 장치에서 다양한 디렉터리와 파일에 대해 작업을 수행합니다. 이러한 작업 중 일부는 승격된 권한(**sudo** 사용)이 필요합니다. 이러한 작업을 자동화하려면 IDT for AWS IoT Greengrass V2가 암호를 입력하라는 메시지 없이 sudo로 명령을 실행할 수 있어야 합니다.

암호 입력 메시지 없이 sudo 액세스를 허용하려면 테스트 대상 장치에서 다음 단계를 수행합니다.

**참고**  
`username`은 IDT가 테스트 대상 장치에 액세스하는 데 사용하는 SSH 사용자를 나타냅니다.

**sudo 그룹에 사용자를 추가하려면**

1. 테스트 대상 장치에서 `sudo usermod -aG sudo <username>`을 실행합니다.

1. 변경 사항을 적용하려면 로그아웃했다가 다시 로그인하십시오.

1. 사용자 이름이 성공적으로 추가되었는지 확인하려면 **sudo echo test**를 실행합니다. 암호 입력 메시지가 표시되지 않으면 사용자가 제대로 구성된 것입니다.

1. `/etc/sudoers` 파일을 열고 파일 끝에 다음 줄을 추가합니다.

   `<ssh-username> ALL=(ALL) NOPASSWD: ALL`

## 사용자 지정 토큰 교환 역할 구성
<a name="configure-custom-tes-role-for-idt"></a>

테스트 중인 디바이스가 AWS 리소스와 상호 작용하기 위해 수임하는 토큰 교환 역할로 사용자 지정 IAM 역할을 사용하도록 선택할 수 있습니다. IAM 역할 생성에 대한 자세한 내용은 IAM 사용 설명서의 [IAM 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) 섹션을 참조하세요.**

IDT에 사용자 지정 IAM 역할 사용을 허용하려면 다음과 같은 요구 사항을 충족해야 합니다. 이 역할에 필요한 최소 정책 작업만 추가하는 것이 좋습니다.
+ [userdata.json](set-config.md#custom-token-exchange-role-idt) 구성 파일을 업데이트하여 `GreengrassV2TokenExchangeRole` 파라미터를 `true`로 설정해야 합니다.
+ 사용자 지정 IAM 역할은 다음 최소 신뢰 정책으로 구성되어야 합니다.

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

****  

  ```
  {
     "Version":"2012-10-17",		 	 	 
     "Statement":[
        {
           "Effect":"Allow",
           "Principal":{
              "Service":[
                 "credentials.iot.amazonaws.com",
                 "lambda.amazonaws.com", 
                 "sagemaker.amazonaws.com" 
              ]
           },
           "Action":"sts:AssumeRole"
        }
     ]
  }
  ```

------
+ 사용자 지정 IAM 역할은 다음 최소 권한 정책으로 구성되어야 합니다.

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

****  

  ```
  {
     "Version":"2012-10-17",		 	 	 
     "Statement":[
        {
           "Effect":"Allow",
           "Action":[
              "iot:DescribeCertificate",
              "logs:CreateLogGroup",
              "logs:CreateLogStream",
              "logs:PutLogEvents",
              "logs:DescribeLogStreams",
              "iot:Connect",
              "iot:Publish",
              "iot:Subscribe",
              "iot:Receive",
              "iot:ListThingPrincipals", 
              "iot:GetThingShadow",
              "iot:UpdateThingShadow",
              "s3:GetBucketLocation",
              "s3:GetObject",
              "s3:PutObject",
              "s3:AbortMultipartUpload",
              "s3:ListMultipartUploadParts"
           ],
           "Resource":"*"
        }
     ]
  }
  ```

------
+ 사용자 지정 IAM 역할의 이름은 테스트 사용자의 IAM 권한에서 지정하는 IAM 역할 리소스와 일치해야 합니다. 기본적으로 [테스트 사용자 정책](dev-tst-prereqs.md#configure-idt-permissions)에서는 역할 이름에 `idt-` 접두사가 있는 IAM 역할에 대한 액세스가 허용됩니다. IAM 역할 이름에 이 접두사가 사용되지 않으면 다음 예제와 같이 테스트 사용자 정책의 `roleAliasResources` 문과 `passRoleForResources` 문에 `arn:aws:iam::*:role/custom-iam-role-name` 리소스를 추가합니다.

    
**Example `passRoleForResources` 명령문**  

  ```
  {
     "Sid":"passRoleForResources",
     "Effect":"Allow",
     "Action":"iam:PassRole",
     "Resource":"arn:aws:iam::*:role/custom-iam-role-name",
     "Condition":{
        "StringEquals":{
           "iam:PassedToService":[
              "iot.amazonaws.com",
              "lambda.amazonaws.com",
              "greengrass.amazonaws.com"
           ]
        }
     }
  }
  ```  
**Example `roleAliasResources` 명령문**  

  ```
  {
     "Sid":"roleAliasResources",
     "Effect":"Allow",
     "Action":[
        "iot:CreateRoleAlias",
        "iot:DescribeRoleAlias",
        "iot:DeleteRoleAlias",
        "iot:TagResource",
        "iam:GetRole"
     ],
     "Resource":[
        "arn:aws:iot:*:*:rolealias/idt-*",
        "arn:aws:iam::*:role/custom-iam-role-name"
     ]
  }
  ```

## 선택적 기능을 테스트하도록 장치 구성
<a name="optional-feature-config"></a>

이 섹션에는 선택적 Docker 및 기계 학습(ML) 특성에 대한 IDT 테스트 실행에 대한 디바이스 요구 사항이 설명되어 있습니다. ML 특성은 IDT v4.9.3에서만 지원됩니다. 이러한 특성을 테스트하려는 경우에만 디바이스에서 이러한 요구 사항이 충족되는지 확인해야 합니다. 그렇지 않은 경우 [AWS IoT Greengrass 검증 제품군을 실행하도록 IDT 설정 구성](set-config.md)를 계속 진행합니다.

**Topics**
+ [Docker 검증 요구 사항](#idt-config-docker-components)
+ [ML 검증 요구 사항](#idt-config-ml-components)
+ [HSM 검증 요구 사항](#idt-config-hsm-components)

### Docker 검증 요구 사항
<a name="idt-config-docker-components"></a>

IDT for AWS IoT Greengrass V2는 디바이스가 AWS제공 Docker [애플리케이션 관리자 구성 요소를 사용하여 사용자 지정 Docker](docker-application-manager-component.md) 컨테이너 구성 요소를 사용하여 실행할 수 있는 Docker 컨테이너 이미지를 다운로드할 수 있는지 검증하는 Docker 검증 테스트를 제공합니다. 사용자 지정 Docker 구성 요소 생성에 대한 내용은 [Docker 컨테이너 실행](run-docker-container.md) 섹션을 참조하세요.

Docker 검증 테스트를 실행하려면 테스트 중인 디바이스에서 Docker 애플리케이션 관리자 구성 요소가 배포되도록 다음과 같은 요구 사항이 충족되어야 합니다.
+ <a name="docker-engine-requirement"></a>Greengrass 코어 디바이스에 [Docker Engine](https://docs.docker.com/engine/) 1.9.1 이상이 설치되어 있어야 합니다. 버전 20.10은 AWS IoT Greengrass 코어 소프트웨어에서 작동하는 것으로 확인된 최신 버전입니다. Docker 컨테이너를 실행하는 구성 요소를 배포하기 전에 코어 디바이스에 직접 Docker를 설치해야 합니다.
+ <a name="docker-daemon-requirement"></a>이 구성 요소를 배포하기 전에 Docker 대몬이 코어 디바이스에서 시작되어 실행되고 있습니다.
+ <a name="docker-user-permissions-requirement"></a>Docker 컨테이너 구성 요소를 실행하는 시스템 사용자에게 루트 또는 관리자 권한이 있거나 루트 또는 관리자가 아닌 사용자로 실행하도록 Docker를 구성해야 합니다.
  + Linux 디바이스에서는 `docker` 그룹에 사용자를 추가하여 `sudo` 없이 `docker` 명령을 직접적으로 호출할 수 있습니다.
  + Windows 디바이스에서는 `docker-users` 그룹에 사용자를 추가하여 관리자 권한 없이 `docker` 명령을 직접적으로 호출할 수 있습니다.

------
#### [ Linux or Unix ]

  Docker 컨테이너 구성 요소를 실행하는 데 사용하는 `ggc_user` 또는 루트 사용자가 아닌 사용자를 `docker` 그룹에 추가하려면 다음 명령을 실행합니다.

  ```
  sudo usermod -aG docker ggc_user
  ```

  자세한 내용은 [루트 사용자가 아닌 사용자로 Docker 관리](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user)를 참조하세요.

------
#### [ Windows Command Prompt (CMD) ]

  `ggc_user` 또는 Docker 컨테이너 구성 요소를 실행하는 데 사용하는 사용자를 `docker-users` 그룹에 추가하려면 관리자로 다음 명령을 실행합니다.

  ```
  net localgroup docker-users ggc_user /add
  ```

------
#### [ Windows PowerShell ]

  `ggc_user` 또는 Docker 컨테이너 구성 요소를 실행하는 데 사용하는 사용자를 `docker-users` 그룹에 추가하려면 관리자로 다음 명령을 실행합니다.

  ```
  Add-LocalGroupMember -Group docker-users -Member ggc_user
  ```

------

### ML 검증 요구 사항
<a name="idt-config-ml-components"></a>

**참고**  
기계 학습 특성은 IDT v4.9.3에서만 지원됩니다.

IDT for AWS IoT Greengrass V2는 디바이스가 AWS제공 [기계 학습 구성 요소를](machine-learning-components.md) 사용하여 [딥 러닝 런타임](https://github.com/neo-ai/neo-ai-dlr) 또는 [TensorFlow Lite](https://www.tensorflow.org/lite/guide/python) ML 프레임워크를 사용하여 로컬에서 ML 추론을 수행할 수 있는지 검증하는 ML 검증 테스트를 제공합니다. Greengrass 디바이스의 ML 추론 실행에 대한 자세한 내용은 [기계 학습 추론 수행](perform-machine-learning-inference.md) 섹션을 참조하세요.

ML 검증 테스트를 실행하려면 테스트 중인 디바이스에서 기계 학습 구성 요소가 배포되도록 다음과 같은 요구 사항이 충족되어야 합니다.<a name="ml-component-requirements"></a>
+ Amazon Linux 2 또는 Ubuntu 18.04를 실행 중인 Greengrass 코어 디바이스의 경우 [GNU C 라이브러리](https://www.gnu.org/software/libc/)(glibc) 버전 2.27 이상이 디바이스에 설치되어 있어야 합니다.
+ Raspberry Pi와 같은 Armv7l 디바이스에는 디바이스에 OpenCV-Python에 대한 종속성이 설치되어 있어야 합니다. 다음 명령을 실행하여 종속성을 설치합니다.

  ```
  sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
  ```
+ Raspberry Pi OS Bullseye를 실행하는 Raspberry Pi 디바이스는 다음과 같은 요구 사항을 충족해야 합니다.
  + 디바이스에 NumPy 1.22.4 이상이 설치되어 있어야 합니다. Raspberry Pi OS Bullseye에는 이전 버전의 NumPy가 포함되어 있으므로 다음 명령을 실행하여 디바이스에서 NumPy를 업그레이드할 수 있습니다.

    ```
    pip3 install --upgrade numpy
    ```
  + 디바이스에서 레거시 카메라 스택이 활성화되어 있어야 합니다. Raspberry Pi OS Bullseye에는 기본적으로 활성화되어 있지만 호환되지 않는 새 카메라 스택이 포함되어 있으므로 레거시 카메라 스택을 활성화해야 합니다.<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**레거시 카메라 스택을 활성화하려면**

    1. 다음 명령을 실행하여 Raspberry Pi 구성 도구를 엽니다.

       ```
       sudo raspi-config
       ```

    1. **인터페이스 옵션**을 선택합니다.

    1. **레거시 카메라**를 선택하여 레거시 카메라 스택을 활성화합니다.

    1. Raspberry Pi를 재부팅합니다.

### HSM 검증 요구 사항
<a name="idt-config-hsm-components"></a>

AWS IoT Greengrass 는 디바이스의 [PKCS 하드웨어 보안 모듈(HSM)과 통합하기 위한 PKCS\$111 공급자 구성 요소를](pkcs11-provider-component.md) 제공합니다. HSM 설정은 디바이스 및 선택한 HSM 모듈에 따라 다릅니다. [IDT 구성 설정](set-config.md)에 문서화되어 있는 대로 예상 HSM 구성이 제공되는 한 이 선택적 특성 검증 테스트 실행에 필요한 정보가 IDT에 있습니다.