

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

# CloudHSM 관리 유틸리티(CMU)를 통한 HSM 사용자 관리
<a name="manage-hsm-users-cmu"></a>

 에서 하드웨어 보안 모듈(HSM) 사용자를 관리하려면 [암호화 책임자](understanding-users-cmu.md#crypto-officer)(CO)의 사용자 이름과 암호를 사용하여 HSM에 로그인 AWS CloudHSM해야 합니다. CO만 사용자를 관리할 수 있습니다. HSM에는 admin이라는 기본 CO가 포함됩니다. [클러스터를 활성화](activate-cluster.md)할 때 admin에 대해 사용할 암호를 설정했습니다.

이 주제에서는 AWS CloudHSM 관리 유틸리티(CMU)를 사용하여 HSM 사용자를 관리하는 방법에 대한 단계별 지침과 세부 정보를 제공합니다.

**Topics**
+ [사전 조건](understand-users.md)
+ [사용자 유형](understanding-users-cmu.md)
+ [권한 테이블](user-permissions-table-cmu.md)
+ [사용자 생성](create-users-cmu.md)
+ [모든 사용자 나열](list-users.md)
+ [암호 변경](change-user-password-cmu.md)
+ [사용자 삭제](delete-user.md)
+ [사용자 2FA 관리](manage-2fa.md)
+ [CMU를 사용하여 쿼럼 인증 관리](quorum-authentication.md)

# AWS CloudHSM 관리 유틸리티의 사용자 관리를 위한 사전 조건
<a name="understand-users"></a>

 AWS CloudHSM 관리 유틸리티(CMU)를 사용하여에서 하드웨어 보안 모듈(HSM) 사용자를 관리하려면 먼저 이러한 사전 조건을 완료해야 AWS CloudHSM합니다. 다음 주제에서는 CMU를 시작하는 방법에 대해 설명합니다.

**Topics**
+ [에서 HSM의 IP 주소 가져오기 AWS CloudHSM](#user-cmu-prereq-ip)
+ [CMU를 Client SDK 3.2.1 이하와 함께 사용](#downlevel-cmu)
+ [CloudHSM 관리 유틸리티 다운로드](#get-cli-users-cmu)

## 에서 HSM의 IP 주소 가져오기 AWS CloudHSM
<a name="user-cmu-prereq-ip"></a>

 CMU를 사용하려면 구성 도구를 사용하여 로컬 구성을 업데이트해야 합니다. CMU는 클러스터에 대한 자체 연결을 생성하며 이 연결은 클러스터를 인식하지 *않습니다*. 클러스터 정보를 추적하기 위해 CMU는 로컬 구성 파일을 유지 관리합니다. 즉, CMU를 *사용할 때마다* 먼저 [구성](configure-tool.md) 명령줄 도구를 `--cmu` 파라미터와 함께 실행하여 구성 파일을 업데이트해야 합니다. Client SDK 3.2.1 이전 버전을 사용하는 경우 `--cmu`와 다른 파라미터를 사용해야 합니다. 자세한 내용은 [CMU를 Client SDK 3.2.1 이하와 함께 사용](#downlevel-cmu) 단원을 참조하십시오.

 `--cmu` 파라미터를 사용하려면 클러스터에 HSM의 IP 주소를 추가해야 합니다. HSM이 여러 개 있는 경우 모든 IP 주소를 사용할 수 있습니다. 이렇게 하면 CMU가 전체 클러스터에 변경 내용을 전파할 수 있습니다. CMU는 로컬 파일을 사용하여 클러스터 정보를 추적한다는 점을 기억하십시오. 특정 호스트의 CMU를 마지막으로 사용한 이후 클러스터가 변경된 경우 해당 호스트에 저장된 로컬 구성 파일에 해당 변경 사항을 추가해야 합니다. CMU를 사용하는 동안에는 HSM을 추가하거나 제거하지 마세요.

**HSM의 IP 주소를 가져오려면(콘솔)**

1. [https://console.aws.amazon.com/cloudhsm/home](https://console.aws.amazon.com/cloudhsm/home) AWS CloudHSM 콘솔을 엽니다.

1. AWS 리전을 변경하려면 페이지의 오른쪽 상단에 있는 리전 선택기를 사용합니다.

1. 클러스터 세부 정보 페이지를 열려면 클러스터 테이블에서 클러스터 ID를 선택합니다.

1. IP 주소를 가져오려면 HSM 탭으로 이동합니다. IPv4 클러스터의 경우 **ENI IPv4 주소**에 나열된 주소를 선택합니다. 듀얼 스택 클러스터의 경우 ENI IPv4 또는 **ENI IPv6 주소**를 사용합니다.

**HSM의 IP 주소를 가져오려면(AWS CLI)**
+  AWS CLI의 **[describe-clusters](https://docs.aws.amazon.com/cli/latest/reference/cloudhsmv2/describe-clusters.html)** 명령을 사용하여 HSM의 IP 주소를 가져옵니다. 명령의 출력에서 HSM의 IP 주소는 `EniIp` 및 `EniIpV6`의 값입니다(듀얼 스택 클러스터인 경우).

  ```
  $ aws cloudhsmv2 describe-clusters
  {
      "Clusters": [
          { ... }
              "Hsms": [
                  {
  ...
                      "EniIp": "10.0.0.9",
  ...
                  },
                  {
  ...
                      "EniIp": "10.0.1.6",
                      "EniIpV6": "2600:113f:404:be09:310e:ed34:3412:f733",
  ...
  ```

## CMU를 Client SDK 3.2.1 이하와 함께 사용
<a name="downlevel-cmu"></a>

클라이언트 SDK 3.3.0을 사용하면 `--cmu` 파라미터에 대한 지원이 AWS CloudHSM 추가되어 CMU의 구성 파일 업데이트 프로세스가 간소화됩니다. Client SDK 3.2.1 이전 버전의 CMU를 사용하는 경우, `-a` 및 `-m` 파라미터를 계속 사용하여 구성 파일을 업데이트해야 합니다. 이러한 파라미터에 대한 자세한 내용은 [도구 구성](configure-tool.md)을 참조하십시오.

## CloudHSM 관리 유틸리티 다운로드
<a name="get-cli-users-cmu"></a>

Client SDK 5와 Client SDK 3을 사용하든 관계없이 HSM 사용자 관리 작업에 최신 버전의 CMU를 사용할 수 있습니다.

**CMU 다운로드 및 설치**
+ CMU를 다운로드하여 설치합니다.

------
#### [ Amazon Linux ]

  ```
  $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-mgmt-util-latest.el6.x86_64.rpm
  ```

  ```
  $ sudo yum install ./cloudhsm-mgmt-util-latest.el6.x86_64.rpm
  ```

------
#### [ Amazon Linux 2 ]

  ```
  $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-mgmt-util-latest.el7.x86_64.rpm
  ```

  ```
  $ sudo yum install ./cloudhsm-mgmt-util-latest.el7.x86_64.rpm
  ```

------
#### [ CentOS 7.8\$1 ]

  ```
  $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-mgmt-util-latest.el7.x86_64.rpm
  ```

  ```
  $ sudo yum install ./cloudhsm-mgmt-util-latest.el7.x86_64.rpm
  ```

------
#### [ CentOS 8.3\$1 ]

  ```
  $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-mgmt-util-latest.el8.x86_64.rpm
  ```

  ```
  $ sudo yum install ./cloudhsm-mgmt-util-latest.el8.x86_64.rpm
  ```

------
#### [ RHEL 7 (7.8\$1) ]

  ```
  $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-mgmt-util-latest.el7.x86_64.rpm
  ```

  ```
  $ sudo yum install ./cloudhsm-mgmt-util-latest.el7.x86_64.rpm
  ```

------
#### [ RHEL 8 (8.3\$1) ]

  ```
  $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-mgmt-util-latest.el8.x86_64.rpm
  ```

  ```
  $ sudo yum install ./cloudhsm-mgmt-util-latest.el8.x86_64.rpm
  ```

------
#### [ Ubuntu 16.04 LTS ]

  ```
  $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Xenial/cloudhsm-mgmt-util_latest_amd64.deb
  ```

  ```
  $ sudo apt install ./cloudhsm-mgmt-util_latest_amd64.deb
  ```

------
#### [ Ubuntu 18.04 LTS ]

  ```
  $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Bionic/cloudhsm-mgmt-util_latest_u18.04_amd64.deb
  ```

  ```
  $ sudo apt install ./cloudhsm-mgmt-util_latest_u18.04_amd64.deb
  ```

------
#### [ Windows Server 2012 ]

  1. [CloudHSM 관리 유틸리티](https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Windows/AWSCloudHSMManagementUtil-latest.msi)를 다운로드합니다.

  1. Windows 관리자 권한으로 CMU 설치 프로그램(**AWSCloudHSMManagementUtil-latest.msi**)을 실행합니다.

------
#### [ Windows Server 2012 R2 ]

  1. [CloudHSM 관리 유틸리티](https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Windows/AWSCloudHSMManagementUtil-latest.msi)를 다운로드합니다.

  1. Windows 관리자 권한으로 CMU 설치 프로그램(**AWSCloudHSMManagementUtil-latest.msi**)을 실행합니다.

------
#### [ Windows Server 2016 ]

  1. [CloudHSM 관리 유틸리티](https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Windows/AWSCloudHSMManagementUtil-latest.msi)를 다운로드합니다.

  1. Windows 관리자 권한으로 CMU 설치 프로그램(**AWSCloudHSMManagementUtil-latest.msi**)을 실행합니다.

------

# AWS CloudHSM 관리 유틸리티의 HSM 사용자 유형
<a name="understanding-users-cmu"></a>

 하드웨어 보안 모듈(HSM)에서 수행하는 대부분의 작업에는 AWS CloudHSM *HSM 사용자의* 자격 증명이 필요합니다. HSM은 각 HSM 사용자를 인증하며, 각 HSM 사용자에게는 해당 사용자로서 HSM에서 수행할 수 있는 작업을 결정하는 *유형*이 있습니다.

**참고**  
HSM 사용자는 IAM 사용자와 다릅니다. 올바른 자격 증명을 보유한 IAM 사용자는 AWS API를 통해 리소스와 상호 작용하여 HSM을 생성할 수 있습니다. HSM을 생성한 후에는 HSM 사용자 자격 증명을 사용하여 HSM에서의 작업을 인증해야 합니다.

**Topics**
+ [PRESCO(Precrypto Officer)](#preco)
+ [CO(Crypto Officer)](#crypto-officer)
+ [CU(Crypto User)](#crypto-user-cmu)
+ [AU(Appliance User)](#appliance-user-cmu)

## PRESCO(Precrypto Officer)
<a name="preco"></a>

클라우드 관리 유틸리티 (CMU) 와 키 관리 유틸리티 (KMU) 모두에서 PRECO는 AWS CloudHSM 클러스터의 첫 번째 HSM에만 존재하는 임시 사용자입니다. 새 클러스터의 첫 번째 HSM에는 이 클러스터가 활성화된 적이 없음을 나타내는 PRECO 사용자가 포함되어 있습니다. [클러스터를 활성화](activate-cluster.md)하려면 cloudhsm-cli를 실행하고 **cluster activate** 명령을 실행합니다. HSM에 로그인하고 PRECO의 암호를 변경합니다. 암호를 변경하면 이 사용자가 CO(Crypto Officer)가 됩니다.

## CO(Crypto Officer)
<a name="crypto-officer"></a>

클라우드 관리 유틸리티(CMU)와 키 관리 유틸리티(KMU) 모두에서 CO(Crypto Officer)는 사용자 관리 작업을 수행할 수 있습니다. 예를 들어, 사용자를 생성 및 삭제하고 사용자 암호를 변경할 수 있습니다. CO 사용자에 대한 자세한 내용은 [AWS CloudHSM 관리 유틸리티에 대한 HSM 사용자 권한 테이블](user-permissions-table-cmu.md) 단원을 참조하십시오. 새 클러스터를 활성화하면 사용자가 PRECO([Precrypto Officer](#preco))에서 CO(Crypto Officer)로 변경됩니다.

## CU(Crypto User)
<a name="crypto-user-cmu"></a>

CU(Crypto User)는 다음 키 관리 및 암호화 작업을 수행할 수 있습니다.
+ **키 관리** – 암호화 키 생성, 삭제, 공유, 가져오기 및 내보내기
+ **암호화 작업** – 암호화, 암호화 해제, 사인, 확인 등에 암호호화 키 사용

자세한 내용은 [AWS CloudHSM 관리 유틸리티에 대한 HSM 사용자 권한 테이블](user-permissions-table-cmu.md) 단원을 참조하십시오.

## AU(Appliance User)
<a name="appliance-user-cmu"></a>

어플라이언스 사용자(AU)는 클러스터의 HSMs에서 복제 및 동기화 작업을 수행할 수 있습니다.는 AU를 AWS CloudHSM 사용하여 AWS CloudHSM 클러스터의 HSMs을 동기화합니다. AU는에서 제공하는 모든 HSMs에 존재 AWS CloudHSM하며 권한이 제한적입니다. 자세한 내용은 [AWS CloudHSM 관리 유틸리티에 대한 HSM 사용자 권한 테이블](user-permissions-table-cmu.md) 단원을 참조하십시오.

AWS 는 HSMs에서 작업을 수행할 수 없습니다. AWS 는 사용자 또는 키를 보거나 수정할 수 없으며 해당 키를 사용하여 암호화 작업을 수행할 수 없습니다.

# AWS CloudHSM 관리 유틸리티에 대한 HSM 사용자 권한 테이블
<a name="user-permissions-table-cmu"></a>

다음 테이블에는 AWS CloudHSM에서 작업을 수행할 수 있는 HSM 사용자 또는 세션 유형별로 정렬된 하드웨어 보안 모듈(HSM) 작업이 나열되어 있습니다.


|  | CO(Crypto Officer) | CU(Crypto User) | AU(Appliance User) | 인증된 세션 | 
| --- | --- | --- | --- | --- | 
| 기본 클러스터 정보 가져오기 | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | 
| 자체 암호 변경 | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | 해당 사항 없음 | 
| 사용자의 암호 변경 | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | 
| 사용자 추가 및 제거 | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | 
| 동기화 상태 가져오기 | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | 
| 마스킹 처리된 객체 추출 및 삽입³ | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | 
| 키 관리 기능⁴ | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | 
| 암호화, 암호 해독 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | 
| 사인 및 확인 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | 
| 다이제스트 및 HMAC 생성 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-yes.png) 예 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | ![\[No\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/icon-no.png) 아니요 | 
+  [1] 기본 클러스터 정보에는 클러스터의 HSM 수와 각 HSM의 IP 주소, 모델, 일련 번호, 디바이스 ID, 펌웨어 ID 등이 포함됩니다.
+  [2] 사용자는 HSM의 키에 해당하는 다이제스트(해시) 집합을 얻을 수 있습니다. 애플리케이션은 이러한 다이제스트 세트를 비교해서 클러스터에서 HSM의 동기화 상태를 파악할 수 있습니다.
+  [3] 마스킹 처리된 객체는 HSM을 떠나기 전에 암호화가 되는 키입니다. HSM 밖에서는 암호를 해독할 수 없습니다. 키가 추출된 HSM과 같은 클러스터에 있는 HSM에 삽입된 후에만 암호가 해독됩니다. 애플리케이션은 마스킹 처리된 객체를 추출 및 삽입하여 클러스터에서 HSM을 동기화할 수 있습니다.
+  [4] 키 관리 함수에는 키 속성 생성, 삭제, 래핑, 언래핑, 수정이 포함됩니다.

# AWS CloudHSM 관리 유틸리티를 사용하여 HSM 사용자 생성
<a name="create-users-cmu"></a>

 AWS CloudHSM 관리 유틸리티(CMU)**createUser**에서를 사용하여 하드웨어 보안 모듈(HSM)에서 새 사용자를 생성합니다. 사용자를 생성하려면 CO로 로그인해야 합니다.

**새로운 CO 사용자 생성**

1. 구성 도구를 사용하여 CMU 구성을 업데이트합니다.

------
#### [ Linux ]

   ```
   $ sudo /opt/cloudhsm/bin/configure --cmu <IP address>
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\configure.exe" --cmu <IP address>
   ```

------

1. CMU를 시작합니다.

------
#### [ Linux ]

   ```
   $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\cloudhsm_mgmt_util.exe" C:\ProgramData\Amazon\CloudHSM\data\cloudhsm_mgmt_util.cfg
   ```

------

1. HSM에 CO 사용자로 로그인합니다.

   ```
   aws-cloudhsm > loginHSM CO admin co12345
   ```

   CMU 목록의 연결 수가 클러스터의 HSM 수와 일치하는지 확인합니다. 그렇지 않은 경우 로그아웃하고 다시 시작합니다.

1. **createUser**를 사용하여 암호가 **password1**인 **example\$1officer**라는 이름의 CO 사용자를 생성합니다.

   ```
   aws-cloudhsm > createUser CO example_officer password1
   ```

   CMU는 사용자 생성 작업에 대한 메시지를 표시합니다.

   ```
   *************************CAUTION********************************
   This is a CRITICAL operation, should be done on all nodes in the
   cluster. AWS does NOT synchronize these changes automatically with the
   nodes on which this operation is not executed or failed, please
   ensure this operation is executed on all nodes in the cluster.
   ****************************************************************
   
   Do you want to continue(y/n)?
   ```

1. **y**를 입력합니다.

**새로운 사용자 생성**

1. 구성 도구를 사용하여 CMU 구성을 업데이트합니다.

------
#### [ Linux ]

   ```
   $ sudo /opt/cloudhsm/bin/configure --cmu <IP address>
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\configure.exe" --cmu <IP address>
   ```

------

1. CMU를 시작합니다.

------
#### [ Linux ]

   ```
   $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\cloudhsm_mgmt_util.exe" C:\ProgramData\Amazon\CloudHSM\data\cloudhsm_mgmt_util.cfg
   ```

------

1. HSM에 CO 사용자로 로그인합니다.

   ```
   aws-cloudhsm > loginHSM CO admin co12345
   ```

   CMU 목록의 연결 수가 클러스터의 HSM 수와 일치하는지 확인합니다. 그렇지 않은 경우 로그아웃하고 다시 시작합니다.

1. **createUser**를 사용하여 암호가 **password1**인 **example\$1user**라는 이름의 CU 사용자를 생성합니다.

   ```
   aws-cloudhsm > createUser CU example_user password1
   ```

   CMU는 사용자 생성 작업에 대한 메시지를 표시합니다.

   ```
   *************************CAUTION********************************
   This is a CRITICAL operation, should be done on all nodes in the
   cluster. AWS does NOT synchronize these changes automatically with the
   nodes on which this operation is not executed or failed, please
   ensure this operation is executed on all nodes in the cluster.
   ****************************************************************
   
   Do you want to continue(y/n)?
   ```

1. **y**를 입력합니다.

**createUser**에 대한 자세한 정보는 [createUser](cloudhsm_mgmt_util-createUser.md)를 참조하십시오.

# AWS CloudHSM 관리 유틸리티를 사용하여 클러스터의 모든 HSM 사용자 나열
<a name="list-users"></a>

 AWS CloudHSM 관리 유틸리티(CMU)의 **listUsers** 명령을 사용하여 AWS CloudHSM 클러스터의 모든 사용자를 나열합니다. **listUsers**를 실행하기 위해 로그인할 필요가 없으며 모든 사용자 유형이 사용자를 나열할 수 있습니다.

**클러스터의 모든 사용자 나열**

1. 구성 도구를 사용하여 CMU 구성을 업데이트합니다.

------
#### [ Linux ]

   ```
   $ sudo /opt/cloudhsm/bin/configure --cmu <IP address>
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\configure.exe" --cmu <IP address>
   ```

------

1. CMU를 시작합니다.

------
#### [ Linux ]

   ```
   $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\cloudhsm_mgmt_util.exe" C:\ProgramData\Amazon\CloudHSM\data\cloudhsm_mgmt_util.cfg
   ```

------

1.  클러스터의 모든 사용자를 나열하는 데 **listUsers**을 사용합니다.

   ```
   aws-cloudhsm > listUsers
   ```

   CMU는 클러스터의 모든 사용자를 나열합니다.

   ```
   Users on server 0(10.0.2.9):
   Number of users found:4
   
       User Id             User Type       User Name                          MofnPubKey    LoginFailureCnt         2FA
            1              AU              app_user                                 NO               0               NO
            2              CO              example_officer                          NO               0               NO
            3              CU              example_user                             NO               0               NO
   Users on server 1(10.0.3.11):
   Number of users found:4
   
       User Id             User Type       User Name                          MofnPubKey    LoginFailureCnt         2FA
            1              AU              app_user                                 NO               0               NO
            2              CO              example_officer                          NO               0               NO
            3              CU              example_user                             NO               0               NO
   Users on server 2(10.0.1.12):
   Number of users found:4
   
       User Id             User Type       User Name                          MofnPubKey    LoginFailureCnt         2FA
            1              AU              app_user                                 NO               0               NO
            2              CO              example_officer                          NO               0               NO
            3              CU              example_user                             NO               0               NO
   ```

**listUsers**에 대한 자세한 내용은 [listUsers](cloudhsm_mgmt_util-listUsers.md)를 참조하십시오.

# AWS CloudHSM 관리 유틸리티를 사용하여 HSM 사용자 암호 변경
<a name="change-user-password-cmu"></a>

 AWS CloudHSM 관리 유틸리티(CMU)**changePswd**에서를 사용하여 하드웨어 보안 모듈(HSM) 사용자의 암호를 변경합니다.

 사용자 유형 및 암호는 대소문자를 구분하지만 사용자 이름은 대소문자를 구분하지 않습니다.

 CU(Crypto User) 및 AU(Appliance User)는 자기 암호만 변경할 수 있습니다. 다른 사용자의 암호를 변경하려면 CO로 로그인해야 합니다. 현재 클라이언트 또는 에 로그인되어 있는 사용자의 암호를 변경할 수 없습니다.

**암호 변경**

1. 구성 도구를 사용하여 CMU 구성을 업데이트합니다.

------
#### [ Linux ]

   ```
   $ sudo /opt/cloudhsm/bin/configure --cmu <IP address>
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\configure.exe" --cmu <IP address>
   ```

------

1. CMU를 시작합니다.

------
#### [ Linux ]

   ```
   $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\cloudhsm_mgmt_util.exe" C:\ProgramData\Amazon\CloudHSM\data\cloudhsm_mgmt_util.cfg
   ```

------

1. HSM에 로그인합니다.

   ```
   aws-cloudhsm > loginHSM CO admin co12345
   ```

   CMU 목록의 연결 수가 클러스터의 HSM 수와 일치하는지 확인합니다. 그렇지 않은 경우 로그아웃하고 다시 시작합니다.

1. **changePswd**를 사용하여 자신의 암호를 변경합니다. 

   ```
   aws-cloudhsm > changePswd CO example_officer <new password>
   ```

   CMU는 암호 변경 작업에 대한 메시지를 표시합니다.

   ```
   *************************CAUTION********************************
   This is a CRITICAL operation, should be done on all nodes in the
   cluster. AWS does NOT synchronize these changes automatically with the
   nodes on which this operation is not executed or failed, please
   ensure this operation is executed on all nodes in the cluster.
   ****************************************************************
   
   Do you want to continue(y/n)?
   ```

1. **y**를 입력합니다.

   CMU는 암호 변경 작업에 대한 메시지를 표시합니다.

   ```
   Changing password for example_officer(CO) on 3 nodes
   ```

**다른 사용자의 암호 변경**

1. 구성 도구를 사용하여 CMU 구성을 업데이트합니다.

------
#### [ Linux ]

   ```
   $ sudo /opt/cloudhsm/bin/configure --cmu <IP address>
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\configure.exe" --cmu <IP address>
   ```

------

1. CMU를 시작합니다.

------
#### [ Linux ]

   ```
   $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\cloudhsm_mgmt_util.exe" C:\ProgramData\Amazon\CloudHSM\data\cloudhsm_mgmt_util.cfg
   ```

------

1. HSM에 CO 사용자로 로그인합니다.

   ```
   aws-cloudhsm > loginHSM CO admin co12345
   ```

   CMU 목록의 연결 수가 클러스터의 HSM 수와 일치하는지 확인합니다. 그렇지 않은 경우 로그아웃하고 다시 시작합니다.

1.  **changePswd**를 사용하여 다른 사용자의 암호를 변경합니다.

   ```
   aws-cloudhsm > changePswd CU example_user <new password>
   ```

   CMU는 암호 변경 작업에 대한 메시지를 표시합니다.

   ```
   *************************CAUTION********************************
   This is a CRITICAL operation, should be done on all nodes in the
   cluster. AWS does NOT synchronize these changes automatically with the
   nodes on which this operation is not executed or failed, please
   ensure this operation is executed on all nodes in the cluster.
   ****************************************************************
   
   Do you want to continue(y/n)?
   ```

1. **y**를 입력합니다.

   CMU는 암호 변경 작업에 대한 메시지를 표시합니다.

   ```
   Changing password for example_user(CU) on 3 nodes
   ```

**changePswd**에 대한 자세한 내용은 [changePswd](cloudhsm_mgmt_util-changePswd.md)를 참조하십시오.

# AWS CloudHSM 관리 유틸리티를 사용하여 HSM 사용자 삭제
<a name="delete-user"></a>

 AWS CloudHSM 관리 유틸리티(CMU)**deleteUser**에서를 사용하여 하드웨어 보안 모듈(HSM) 사용자를 삭제합니다. 다른 사용자를 삭제하려면 CO로 로그인해야 합니다.

**작은 정보**  
 키를 소유한 CU(Crypto User)는 삭제할 수 없습니다.

**사용자 삭제**

1. 구성 도구를 사용하여 CMU 구성을 업데이트합니다.

------
#### [ Linux ]

   ```
   $ sudo /opt/cloudhsm/bin/configure --cmu <IP address>
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\configure.exe" --cmu <IP address>
   ```

------

1. CMU를 시작합니다.

------
#### [ Linux ]

   ```
   $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\cloudhsm_mgmt_util.exe" C:\ProgramData\Amazon\CloudHSM\data\cloudhsm_mgmt_util.cfg
   ```

------

1. HSM에 CO 사용자로 로그인합니다.

   ```
   aws-cloudhsm > loginHSM CO admin co12345
   ```

   CMU 목록의 연결 수가 클러스터의 HSM 수와 일치하는지 확인합니다. 그렇지 않은 경우 로그아웃하고 다시 시작합니다.

1.  **deleteUser**를 사용하여 사용자를 삭제합니다.

   ```
   aws-cloudhsm > deleteUser CO example_officer
   ```

   CMU는 사용자를 삭제합니다.

   ```
   Deleting user example_officer(CO) on 3 nodes
   deleteUser success on server 0(10.0.2.9)
   deleteUser success on server 1(10.0.3.11)
   deleteUser success on server 2(10.0.1.12)
   ```

**deleteUser**에 대한 자세한 내용은 [deleteUser](cloudhsm_mgmt_util-deleteUser.md)를 참조하십시오.

# 관리 유틸리티를 사용하여 사용자를 위한 2FA AWS CloudHSM 관리
<a name="manage-2fa"></a>

보안을 강화하기 위해, 2단계 인증(2FA)을 구성하여 AWS CloudHSM 클러스터를 보호할 수 있습니다. CO(Crypto Officer)에 대해서만 2FA를 활성화할 수 있습니다.

2FA 지원 하드웨어 서비스 모듈(HSM) 계정으로 클러스터에 로그인할 때 첫 번째 요소인 cloudhsm\$1mgmt\$1util(CMU)에 암호를 입력하면 CMU는 토큰을 제공하고 토큰에 서명하라는 메시지를 표시합니다. 가지고 있는 두 번째 요소를 제공하려면 이미 생성하여 HSM 사용자와 연결한 키 페어의 프라이빗 키로 토큰에 서명합니다. 클러스터에 액세스하려면 서명된 토큰을 CMU에 제공합니다.

**참고**  
CU(Crypto User) 또는 애플리케이션에는 2FA를 활성화할 수 없습니다. 2팩터 인증(2FA)은 CO 사용자만 사용할 수 있습니다.

**Topics**
+ [쿼럼 인증](quorum-2fa.md)
+ [키 페어 요구 사항](enable-2fa-kms.md)
+ [사용자 생성](create-2fa.md)
+ [사용자 2FA 관리](rotate-2fa.md)
+ [2FA 비활성화](disable-2fa.md)
+ [구성 참조](reference-2fa.md)

# AWS CloudHSM 관리 유틸리티를 사용한 AWS CloudHSM 클러스터의 쿼럼 인증 및 2FA
<a name="quorum-2fa"></a>

클러스터는 쿼럼 인증과 2단계 인증(2FA)에 동일한 키를 사용합니다. 즉, 2FA가 활성화된 사용자가 M-of-N 액세스 제어(MoFn)에 효과적으로 등록되었다는 것을 의미합니다. 동일한 HSM 사용자에 대해 2FA 및 쿼럼 인증을 성공적으로 사용하려면 다음 사항을 고려해야 합니다.
+ 현재 사용자에 대해 쿼럼 인증을 사용하는 경우 쿼럼 사용자에 대해 생성한 것과 동일한 키 페어를 사용하여 사용자에 대해 2FA를 활성화해야 합니다.
+ 쿼럼 인증 사용자가 아닌 비 2FA 사용자에 대한 2FA 요구 사항을 추가하면 2FA 인증을 통해 해당 사용자를 MofN 사용자로 등록합니다.
+ 2FA 요구 사항을 제거하거나 쿼럼 인증 사용자이기도 한 2FA 사용자의 암호를 변경하면 해당 쿼럼 사용자의 MoFN 사용자 등록도 제거됩니다.
+ 쿼럼 인증 사용자이기도 한 2FA 사용자의 2FA 요구 사항을 제거하거나 암호는 변경하지만 *해당 사용자가 여전히 쿼럼 인증에 참여하도록 하려면* 해당 사용자를 MoFN 사용자로 다시 등록해야 합니다.

쿼럼 인증에 대한 자세한 내용은 [CMU를 사용하여 쿼럼 인증 관리](quorum-authentication.md) 섹션을 참조하십시오.

# AWS CloudHSM 관리 유틸리티 AWS CloudHSM 사용에 대한 2FA 키 페어 요구 사항
<a name="enable-2fa-kms"></a>

 AWS CloudHSM 하드웨어 보안 모듈(HSM) 사용자에 대해 2단계 인증(2FA)을 활성화하려면 다음 요구 사항을 충족하는 키를 사용합니다.

새 키 페어를 만들거나 다음 요구 사항을 충족하는 기존 키를 사용할 수 있습니다.
+ 키 유형: 비대칭
+ 키 사용: 서명 및 확인
+ 키 사양: RSA\$12048
+ 서명 알고리즘에는 다음이 포함됩니다.
  + `sha256WithRSAEncryption`

**참고**  
쿼럼 인증을 사용하거나 쿼럼 인증을 사용할 계획인 경우 [AWS CloudHSM 관리 유틸리티를 사용한 AWS CloudHSM 클러스터의 쿼럼 인증 및 2FA](quorum-2fa.md) 섹션을 참조하십시오.

# AWS CloudHSM 관리 유틸리티 사용자에 대해 2FA가 활성화된 사용자 생성
<a name="create-2fa"></a>

 AWS CloudHSM 관리 유틸리티 CMU(CMU) 및 키 페어를 사용하여 2단계 인증(2FA)이 활성화된 새 CO(Crypto Office) 사용자를 생성합니다.

**2FA가 활성화된 CO 사용자를 생성하려면**

1. 한 터미널에서 다음 단계를 수행합니다.

   1. HSM에 액세스하고 CloudHSM 관리 유틸리티에 로그인합니다.

      ```
      /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
      ```

   1. CO로 로그인하고 다음 명령을 사용하여 2FA가 있는 새 사용자 MFA를 생성합니다.

      ```
      aws-cloudhsm > createUser CO MFA <CO USER PASSWORD> -2fa /home/ec2-user/authdata
      *************************CAUTION********************************
      This is a CRITICAL operation, should be done on all nodes in the
      cluster. AWS does NOT synchronize these changes automatically with the 
      nodes on which this operation is not executed or failed, please 
      ensure this operation is executed on all nodes in the cluster.  
      ****************************************************************
      
      Do you want to continue(y/n)? y
      
      Creating User exampleuser3(CO) on 1 nodesAuthentication data written to: "/home/ec2-user/authdata"Generate Base64-encoded signatures for SHA256 digests in the authentication datafile. 
      To generate the signatures, use the RSA private key, which is the second factor ofauthentication for this user. Paste the signatures and the corresponding public keyinto the authentication data file and provide 
      the file path below.Leave this field blank to use the path initially provided.Enter filename:
      ```

   1. 위 터미널을 이 상태로 둡니다. Enter 키를 누르거나 파일 이름을 입력하면 안 됩니다.

1. 다른 터미널에서 다음 단계를 수행합니다.

   1. HSM에 액세스하고 CloudHSM 관리 유틸리티에 로그인합니다.

      ```
      /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
      ```

   1. 다음 명령을 사용하여 퍼블릭-프라이빗 키 페어를 생성합니다.

      ```
      openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
      ```

      ```
      openssl rsa -pubout -in private_key.pem -out public_key.pem
      ```

   1. 다음 명령을 실행하여 authdata 파일에서 다이제스트를 추출하기 위한 json 쿼리 기능을 설치합니다.

      ```
      sudo yum install jq
      ```

   1. 다이제스트 값을 추출하려면 먼저 authdata 파일에서 다음 데이터를 찾습니다.

      ```
      {
        "Version":"1.0",
        "PublicKey":"",
        "Data":[
          {
            "HsmId": <"HSM ID">,
            "Digest": <"DIGEST">,
            "Signature": ""
          }
        ]
      }
      ```
**참고**  
획득한 다이제스트는 base64로 인코딩되지만 다이제스트에 서명하려면 먼저 파일을 디코딩한 다음 서명해야 합니다. 다음 명령은 다이제스트를 디코딩하고 디코딩된 콘텐츠를 'digest1.bin'에 저장합니다.  

      ```
      cat authdata | jq '.Data[0].Digest' | cut -c2- | rev | cut -c2- | rev | base64 -d > digest1.bin
      ```

   1. 다음과 같이 퍼블릭 키 콘텐츠를 변환하고 "\$1n"을 추가하며 공백을 제거합니다.

      ```
      -----BEGIN PUBLIC KEY-----\n<PUBLIC KEY>\n-----END PUBLIC KEY----- 
      ```
**중요**  
위 명령은 **BEGIN PUBLIC KEY-----** 바로 뒤에 "\$1n"이 추가되고, "\$1n"과 퍼블릭 키의 첫 번째 문자 사이의 공백이 제거되며, "\$1n"이 **-----END PUBLIC KEY** 앞에 추가되고, "\$1n"과 퍼블릭 키의 끝 사이의 공백이 제거되는 방식을 보여줍니다.

      이는 authdata 파일에 허용되는 퍼블릭 키의 PEM 형식입니다.

   1. authdata 파일의 퍼블릭 키 섹션에 퍼블릭 키 pem 형식 콘텐츠를 붙여 넣습니다.

      ```
      vi authdata
      ```

      ```
      {
        "Version":"1.0",
        "PublicKey":"-----BEGIN PUBLIC KEY-----\n<"PUBLIC KEY">\n-----END PUBLIC KEY-----",
        "Data":[    
          {      
            "HsmId":<"HSM ID">,
            "Digest":<"DIGEST">,      
            "Signature": ""   
          }  
        ]
      }
      ```

   1. 다음 명령을 사용하여 토큰 파일에 서명합니다.

      ```
      openssl pkeyutl -sign -in digest1.bin -inkey private_key.pem -pkeyopt digest:sha256 | base64
      Output Expected:
      <"THE SIGNATURE">
      ```
**참고**  
위 명령에서 볼 수 있듯이, **openssl dgst** 서명 대신 **openssl pkeyutl**을 사용합니다.

   1. Authdata 파일의 “서명” 필드에 서명된 다이제스트를 추가합니다.

      ```
      vi authdata
      ```

      ```
      {
          "Version": "1.0",
          "PublicKey": "-----BEGIN PUBLIC KEY----- ... -----END PUBLIC KEY-----",
          "Data": [
              {
                  "HsmId": <"HSM ID">,
                  "Digest": <"DIGEST">,
                  "Signature": <"Kkdl ... rkrvJ6Q==">
              },
              {
                  "HsmId": <"HSM ID">,
                  "Digest": <"DIGEST">,
                  "Signature": <"K1hxy ... Q261Q==">
              }
          ]
      }
      ```

1. 첫 번째 터미널로 돌아가서 **Enter**을 누릅니다.

   ```
   Generate Base64-encoded signatures for SHA256 digests in the authentication datafile. To generate the signatures, use the RSA private key, 
   which is the second factor ofauthentication for this user. Paste the signatures and the corresponding public keyinto the authentication data file and provide the file path below. Leave this field blank to use the path initially provided. 
   Enter filename: >>>>> Press Enter here
   
   createUser success on server 0(10.0.1.11)
   ```

# 관리 유틸리티를 사용하여 HSM 사용자를 위한 2FA AWS CloudHSM 관리
<a name="rotate-2fa"></a>

 AWS CloudHSM 관리 유틸리티(CMU)**changePswd**에서를 사용하여 사용자의 2단계 인증(2FA)을 수정합니다. 2FA를 활성화할 때마다 2FA 로그인을 위한 퍼블릭 키를 제공해야 합니다.

**changePswd**은 다음 시나리오 중 하나를 수행합니다.
+ 2FA 사용자의 암호 변경
+ 2FA가 아닌 사용자의 암호 변경
+ 2FA가 아닌 사용자에게 2FA 추가
+ 2FA 사용자의 2FA 삭제
+ 2FA 사용자의 키 교체

작업을 결합할 수도 있습니다. 예를 들어, 사용자로부터 2FA를 제거하고 동시에 암호를 변경하거나 2FA 키를 교체하여 사용자 암호를 변경할 수도 있습니다.

**2FA가 활성화된 CO 사용자의 암호를 변경하거나 키를 교체하려면**

1. CMU를 사용하여 2FA가 활성화된 상태에서 CO로 HSM에 로그인합니다.

1.  **changePswd**을 사용하여 2FA가 활성화된 CO 사용자의 암호를 변경하거나 키를 교체합니다. `-2fa` 파라미터를 사용하고 시스템이 `authdata` 파일을 쓸 수 있는 위치를 파일 시스템에 포함시킵니다. 이 파일에는 클러스터의 각 HSM에 대한 다이제스트가 포함됩니다.

   ```
   aws-cloudhsm > changePswd CO example-user <new-password> -2fa /path/to/authdata
   ```

   CMU는 프라이빗 키를 사용하여 `authdata` 파일의 다이제스트에 서명하고 퍼블릭 키와 함께 서명을 반환하라는 메시지를 표시합니다.

1. 프라이빗 키를 사용하여 `authdata` 파일의 다이제스트에 서명하고 서명과 퍼블릭 키를 JSON 형식의 `authdata` 파일에 추가한 다음 CMU에 `authdata` 파일 위치를 제공하십시오. 자세한 내용은 [AWS CloudHSM 관리 유틸리티를 사용하는 2FA에 대한 구성 참조](reference-2fa.md) 섹션을 참조하십시오.
**참고**  
클러스터는 쿼럼 인증 및 2FA에 동일한 키를 사용합니다. 쿼럼 인증을 사용하거나 쿼럼 인증을 사용할 계획인 경우 [AWS CloudHSM 관리 유틸리티를 사용한 AWS CloudHSM 클러스터의 쿼럼 인증 및 2FA](quorum-2fa.md) 섹션을 참조하십시오.

# AWS CloudHSM 관리 유틸리티를 사용하여 HSM 사용자에 대해 2FA 비활성화
<a name="disable-2fa"></a>

 AWS CloudHSM 관리 유틸리티(CMU)를 사용하여의 하드웨어 보안 모듈 HSM 사용자에 대해 2단계 인증(2FA)을 비활성화합니다 AWS CloudHSM.

**2FA가 활성화된 CO 사용자에 대해 2FA를 비활성화하려면**

1. CMU를 사용하여 2FA가 활성화된 상태에서 CO로 HSM에 로그인합니다.

1.  **changePswd**을 사용하여 2FA가 활성화된 CO 사용자로부터 2FA를 제거합니다.

   ```
   aws-cloudhsm > changePswd CO example-user <new password>
   ```

   CMU는 암호 변경 작업을 확인하라는 메시지를 표시합니다.
**참고**  
2FA 요구 사항을 제거하거나 쿼럼 인증 사용자이기도 한 2FA 사용자의 암호를 변경하면 해당 쿼럼 사용자의 MoFN 사용자 등록도 제거됩니다. 쿼럼 사용자 및 2FA에 대한 자세한 내용은 [AWS CloudHSM 관리 유틸리티를 사용한 AWS CloudHSM 클러스터의 쿼럼 인증 및 2FA](quorum-2fa.md) 섹션을 참조하십시오.

1. **y**를 입력합니다.

   CMU는 암호 변경 작업을 확인합니다.

# AWS CloudHSM 관리 유틸리티를 사용하는 2FA에 대한 구성 참조
<a name="reference-2fa"></a>

다음은 AWS CloudHSM 관리 유틸리티(CMU) 생성 요청과 응답 모두에 대한 `authdata` 파일의 2단계 인증(2FA) 속성의 예입니다.

```
{
    "Version": "1.0",
    "PublicKey": "-----BEGIN PUBLIC KEY----- ... -----END PUBLIC KEY-----",
    "Data": [
        {
            "HsmId": "hsm-lgavqitns2a",
            "Digest": "k5O1p3f6foQRVQH7S8Rrjcau6h3TYqsSdr16A54+qG8=",
            "Signature": "Kkdl ... rkrvJ6Q=="
        },
        {
            "HsmId": "hsm-lgavqitns2a",
            "Digest": "IyBcx4I5Vyx1jztwvXinCBQd9lDx8oQe7iRrWjBAi1w=",
            "Signature": "K1hxy ... Q261Q=="
        }
    ]
}
```

**데이터**  
최상위 노드 클러스터의 각 HSM에 대한 하위 노드를 포함합니다. 모든 2FA 명령에 대한 요청 및 응답에 나타납니다.

**다이제스트**  
두 번째 인증 요소를 제공하기 위해 서명해야 하는 사항입니다. CMU는 모든 2FA 명령에 대한 요청에서 생성됩니다.

**HsmId**  
HSM의 ID입니다. 모든 2FA 명령에 대한 요청 및 응답에 나타납니다.

**PublicKey**  
생성한 키 페어의 퍼블릭 키 부분이 PEM 형식의 문자열로 삽입되었습니다. **createUser** 및 **changePswd**에 대한 응답에 이를 입력합니다.

**서명**  
Base 64로 인코딩된 서명된 다이제스트입니다. 모든 2FA 명령에 대한 응답에 이를 입력합니다.

**버전**  
인증 데이터 JSON 형식 파일의 버전입니다. 모든 2FA 명령에 대한 요청 및 응답에 나타납니다.

# CloudHSM 관리 유틸리티(CMU)를 사용하여 쿼럼 인증 관리(M/N 액세스 제어)
<a name="quorum-authentication"></a>

 AWS CloudHSM 클러스터의 HSMs은 M of N 액세스 제어라고도 하는 쿼럼 인증을 지원합니다. 쿼럼 인증의 경우, HSM의 단일 사용자는 HSM에서 쿼럼 제어 작업을 수행할 수 없습니다. 이러한 작업을 하려면 최소 숫자의 HSM 사용자(최소 2명)가 협력해야 합니다. 쿼럼 인증의 경우, 2명 이상의 HSM 사용자의 승인을 요구함으로써 보호 계층을 추가할 수 있습니다.

쿼럼 인증은 다음 작업을 제어할 수 있습니다.
+ [CO(Crypto Officer)](understanding-users-cmu.md#crypto-officer)의 HSM 사용자 관리 – HSM 사용자 생성 및 삭제, 다른 HSM 사용자의 암호 변경. 자세한 내용은 [관리 유틸리티에 대해 쿼럼 인증이 활성화된 사용자 AWS CloudHSM 관리](quorum-authentication-crypto-officers.md) 단원을 참조하십시오.

 AWS CloudHSM의 쿼럼 인증 사용에 대해 다음 내용을 추가로 참고하십시오.
+ HSM 사용자는 자신의 쿼럼 토큰에 서명할 수 있습니다. 즉, 요청한 사용자는 쿼럼 인증에 필요한 승인 중 하나를 제공할 수 있습니다.
+ 쿼럼 제어 작업을 위한 최소 숫자의 쿼럼 승인자를 선택합니다. 선택할 수 있는 최소 숫자는 2이고, 선택할 수 있는 최대 수는 8입니다.
+ HSM은 최대 1024개의 쿼럼 토큰을 저장할 수 있습니다. 새 토큰을 생성하려고 할 때 HSM에 이미 1024개의 토큰이 있는 경우, HSM은 만료된 토큰 중 하나를 삭제합니다. 기본적으로 토큰은 생성 10분 후에 만료됩니다.
+ 클러스터는 쿼럼 인증과 2단계 인증(2FA)에 동일한 키를 사용합니다. 쿼럼 인증 및 2FA 사용에 대한 자세한 내용은 [쿼럼 인증 및 2FA](quorum-2fa.md)를 참조하십시오.

다음 주제에는 AWS CloudHSM의 쿼럼 인증에 대한 자세한 내용이 있습니다.

**Topics**
+ [쿼럼 인증 프로세스](quorum-authentication-overview.md)
+ [최초 설정](quorum-authentication-crypto-officers-first-time-setup.md)
+ [쿼럼을 사용한 사용자 관리(N 중 M)](quorum-authentication-crypto-officers.md)
+ [최소값 변경](quorum-authentication-crypto-officers-change-minimum-value.md)

# AWS CloudHSM 관리 유틸리티에 대한 쿼럼 인증 프로세스
<a name="quorum-authentication-overview"></a>

다음 단계는 쿼럼 인증 프로세스를 요약합니다. 구체적인 단계와 도구는 [관리 유틸리티에 대해 쿼럼 인증이 활성화된 사용자 AWS CloudHSM 관리](quorum-authentication-crypto-officers.md)을 참조하십시오.

1. 각각의 HSM 사용자는 서명을 위한 비대칭 키를 생성합니다. 이 사용자들은 HSM 외부에서 이를 수행하며 키를 적절히 보호하기 위해 주의합니다.

1. 각 HSM 사용자는 HSM에 로그인하고 자신의 서명 키의 퍼블릭 부분(퍼블릭 키)을 HSM에 등록합니다.

1. HSM 사용자가 쿼럼 제어 작업을 수행하려는 경우, 각 사용자는 HSM에 로그인하고 *쿼럼 토큰*을 가져옵니다.

1. HSM 사용자는 한 명 이상의 다른 HSM 사용자에게 쿼럼 토큰을 제공하고 승인을 요청합니다.

1. 다른 HSM 사용자는 자신의 키를 사용하여 암호화된 방식으로 쿼럼 토큰에 서명함으로써 승인합니다. 이는 HSM 외부에서 이루어집니다.

1. HSM 사용자가 필요한 수의 승인을 받으면 동일한 사용자가 HSM에 로그인하여 쿼럼 토큰과 승인(서명)을 HSM에 제공합니다.

1. HSM은 각 서명자의 등록된 퍼블릭 키를 사용하여 서명을 확인합니다. 서명이 유효하면 HSM이 토큰을 승인합니다.

1. HSM 사용자는 이제 쿼럼 제어 작업을 할 수 있습니다.

# crypto officer에 대한 AWS CloudHSM 쿼럼 인증 설정
<a name="quorum-authentication-crypto-officers-first-time-setup"></a>

다음 주제에서는 AWS CloudHSM [COs)을](understanding-users-cmu.md#crypto-officer) 구성하기 위해 완료해야 하는 단계를 설명합니다. 이러한 단계는 처음으로 CO 쿼럼 인증을 구성할 때 한 번만 수행하면 됩니다. 이 단계들을 완료한 후 [관리 유틸리티에 대해 쿼럼 인증이 활성화된 사용자 AWS CloudHSM 관리](quorum-authentication-crypto-officers.md) 섹션을 참조하십시오.

**Topics**
+ [사전 조건](#quorum-crypto-officers-prerequisites)
+ [1단계. 서명용 키 생성 및 등록](#quorum-crypto-officers-create-and-register-key)
+ [2단계. HSM에서 쿼럼 최소값 설정](#quorum-crypto-officers-set-quorum-minimum-value)

## 사전 조건
<a name="quorum-crypto-officers-prerequisites"></a>

이 예제 코드를 이해하려면 [cloudhsm\$1mgmt\$1util명령줄 도구(CMU)](cloudhsm_mgmt_util.md)에 익숙해야 합니다. 이 예제에서 AWS CloudHSM 클러스터에는 **listUsers** 명령의 다음 출력과 같이 각각 동일한 COs를 가진 두 개의 HSMs이 있습니다. 사용자 생성에 대한 자세한 내용은 [HSM 사용자](manage-hsm-users.md) 단원을 참조하십시오.

```
aws-cloudhsm > listUsers
Users on server 0(10.0.2.14):
Number of users found:7

    User Id             User Type       User Name                          MofnPubKey    LoginFailureCnt         2FA
         1              PRECO           admin                                    NO               0               NO
         2              AU              app_user                                 NO               0               NO
         3              CO              officer1                                 NO               0               NO
         4              CO              officer2                                 NO               0               NO
         5              CO              officer3                                 NO               0               NO
         6              CO              officer4                                 NO               0               NO
         7              CO              officer5                                 NO               0               NO
Users on server 1(10.0.1.4):
Number of users found:7

    User Id             User Type       User Name                          MofnPubKey    LoginFailureCnt         2FA
         1              PRECO           admin                                    NO               0               NO
         2              AU              app_user                                 NO               0               NO
         3              CO              officer1                                 NO               0               NO
         4              CO              officer2                                 NO               0               NO
         5              CO              officer3                                 NO               0               NO
         6              CO              officer4                                 NO               0               NO
         7              CO              officer5                                 NO               0               NO
```

## 1단계. 서명용 키 생성 및 등록
<a name="quorum-crypto-officers-create-and-register-key"></a>

쿼럼 인증을 사용하려면 각 CO는 다음 단계를 *모두* 수행해야 합니다.

**Topics**
+ [RSA 키 페어 생성](#mofn-key-pair-create)
+ [등록 토큰 생성 및 서명](#mofn-registration-token)
+ [HSM에 퍼블릭 키 등록](#mofn-register-key)

### RSA 키 페어 생성
<a name="mofn-key-pair-create"></a>

키 쌍을 생성하고 보호하는 방법에는 여러 가지가 있습니다. 다음 예제에서는 [OpenSSL](https://www.openssl.org/)을 사용한 작업 방법을 보여 줍니다.

**Example — OpenSSL을 사용하여 개인 키를 생성하세요**  
다음 예제는 OpenSSL을 사용하여 암호로 보호되는 2048비트 RSA 키를 생성하는 방법을 보여 줍니다. 이 예를 사용하려면 *officer1.key*를 키를 저장하려는 파일 이름으로 바꿉니다.  

```
$ openssl genrsa -out <officer1.key> -aes256 2048
        Generating RSA private key, 2048 bit long modulus
.....................................+++
.+++
e is 65537 (0x10001)
Enter pass phrase for officer1.key:
Verifying - Enter pass phrase for officer1.key:
```

다음으로 방금 생성한 프라이빗 키를 사용하여 퍼블릭 키를 생성합니다.

**Example — OpenSSL로 퍼블릭 키 생성하기**  
다음 예에서는 OpenSSL을 사용하여 방금 생성한 프라이빗 키에서 퍼블릭 키를 생성하는 방법을 보여줍니다.  

```
$ openssl rsa -in officer1.key -outform PEM -pubout -out officer1.pub
Enter pass phrase for officer1.key:
writing RSA key
```

### 등록 토큰 생성 및 서명
<a name="mofn-registration-token"></a>

 토큰을 생성하고 이전 단계에서 방금 생성한 프라이빗 키로 서명합니다.

**Example – 토큰 생성**  
등록 토큰은 최대 크기인 245바이트를 초과하지 않는 임의의 데이터가 포함된 파일입니다. 프라이빗 키로 토큰에 서명하여 프라이빗 키에 액세스할 수 있음을 입증합니다. 다음 명령은 에코를 사용하여 문자열을 파일로 리디렉션합니다.  

```
$ echo <token to be signed> > officer1.token
```

토큰에 서명하고 서명 파일에 저장합니다. CO를 HSM에 MofN 사용자로 등록하려면 서명된 토큰, 서명되지 않은 토큰, 퍼블릭 키가 필요합니다.

**Example – 토큰에 서명하기**  
OpenSSL과 프라이빗 키를 사용하여 등록 토큰에 서명하고 서명 파일을 생성합니다.  

```
$ openssl dgst -sha256 \
    -sign officer1.key \
    -out officer1.token.sig officer1.token
```

### HSM에 퍼블릭 키 등록
<a name="mofn-register-key"></a>

키를 생성한 후 CO는 키의 퍼블릭 부분(퍼블릭 키)을 HSM에 등록해야 합니다.

**퍼블릭 키를 HSM에 등록하려면**

1. 다음 명령을 사용하여 cloudhsm\$1mgmt\$1util 명령줄 도구를 시작합니다.

   ```
   $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
   ```

1. **loginHSM** 명령을 사용하여 HSM에 CO로 로그인합니다. 자세한 내용은 [CloudHSM 관리 유틸리티(CMU)를 통한 HSM 사용자 관리](manage-hsm-users-cmu.md) 섹션을 참조하십시오.

1. **[registerQuorumPubKey](cloudhsm_mgmt_util-registerQuorumPubKey.md)** 명령을 사용하여 퍼블릭 키를 등록합니다. 자세한 내용은 다음 예제를 참조하거나 **help registerQuorumPubKey** 명령을 사용하십시오.

**Example – HSM에 퍼블릭 키 등록**  
다음 예제에서는 cloudhsm\$1mgmt\$1util 명령줄 도구의 **registerQuorumPubKey** 명령을 사용하여 HSM에 CO의 퍼블릭 키를 등록하는 방법을 보여 줍니다. 이 명령을 사용하려면 CO가 HSM에 로그인해야 합니다. 이 값들을 사용자의 값으로 대체합니다.  

```
aws-cloudhsm > registerQuorumPubKey CO <officer1> <officer1.token> <officer1.token.sig> <officer1.pub>
*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. AWS does NOT synchronize these changes automatically with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)? y
registerQuorumPubKey success on server 0(10.0.2.14)
```  
**<officer1.token>**  
서명되지 않은 등록 토큰이 포함된 파일의 경로입니다. 최대 파일 크기가 245바이트인 임의의 데이터를 포함할 수 있습니다.  
필수 항목 여부: 예  
**<officer1.token.sig>**  
등록 토큰의 SHA256\$1PKCS 메커니즘 서명 해시가 포함된 파일의 경로입니다.  
필수 항목 여부: 예  
**<officer1.pub>**  
비대칭 RSA-2048 키 페어의 퍼블릭 키를 포함하는 파일의 경로입니다. 프라이빗 키를 사용하여 등록 토큰에 서명합니다.  
필수 항목 여부: 예
모든 CO가 퍼블릭 키를 등록한 후 다음 예제와 같이 **listUsers** 명령 출력의 `MofnPubKey` 열에 이 내용이 표시됩니다.  

```
aws-cloudhsm > listUsers
Users on server 0(10.0.2.14):
Number of users found:7

    User Id             User Type       User Name                          MofnPubKey    LoginFailureCnt         2FA
         1              PRECO           admin                                    NO               0               NO
         2              AU              app_user                                 NO               0               NO
         3              CO              officer1                                YES               0               NO
         4              CO              officer2                                YES               0               NO
         5              CO              officer3                                YES               0               NO
         6              CO              officer4                                YES               0               NO
         7              CO              officer5                                YES               0               NO
Users on server 1(10.0.1.4):
Number of users found:7

    User Id             User Type       User Name                          MofnPubKey    LoginFailureCnt         2FA
         1              PRECO           admin                                    NO               0               NO
         2              AU              app_user                                 NO               0               NO
         3              CO              officer1                                YES               0               NO
         4              CO              officer2                                YES               0               NO
         5              CO              officer3                                YES               0               NO
         6              CO              officer4                                YES               0               NO
         7              CO              officer5                                YES               0               NO
```

## 2단계. HSM에서 쿼럼 최소값 설정
<a name="quorum-crypto-officers-set-quorum-minimum-value"></a>

*CO에 쿼럼 인증을 사용하려면 CO가 HSM에 로그인한 다음 *쿼럼 최소값*(m 값이라고도 함)을 설정해야 합니다.* 이것은 HSM 사용자 관리 작업을 수행하는 데 필요한 최소 CO 승인 수입니다. 서명을 위해 키를 등록하지 않은 CO를 포함하여 HSM의 모든 CO는 쿼럼 최소값을 설정할 수 있습니다. 쿼럼 최소값은 언제든지 변경할 수 있습니다. 자세한 내용은 [최소값 변경](quorum-authentication-crypto-officers-change-minimum-value.md)을 참조하십시오.

**HSM에서 쿼럼 최소값을 설정하려면**

1. 다음 명령을 사용하여 cloudhsm\$1mgmt\$1util 명령줄 도구를 시작합니다.

   ```
   $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
   ```

1. **loginHSM** 명령을 사용하여 HSM에 CO로 로그인합니다. 자세한 내용은 [CloudHSM 관리 유틸리티(CMU)를 통한 HSM 사용자 관리](manage-hsm-users-cmu.md) 섹션을 참조하십시오.

1. **setMValue** 명령을 사용하여 쿼럼 최소값을 설정합니다. 자세한 내용은 다음 예제를 참조하거나 **help setMValue** 명령을 사용하십시오.

**Example - HSM에서 쿼럼 최소값 설정**  
이 예제에서는 쿼럼 최소값 2를 사용합니다. HSM의 총 CO 수까지 2\$18 사이의 어떤 값도 선택할 수 있습니다. 이 예에서 HSM에는 6개의 CO가 있으므로 가능한 최대 값은 6입니다.  
다음 예제 명령을 사용하려면 마지막 숫자(*2*)를 원하는 쿼럼 최소값으로 대체해야 합니다.  

```
aws-cloudhsm > setMValue 3 <2>
*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. AWS does NOT synchronize these changes automatically with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)? y
Setting M Value(2) for 3 on 2 nodes
```

앞의 예제에서 첫 번째 숫자(3)는 쿼럼 최소값을 설정할 *HSM 서비스*를 식별합니다.

다음 표에는 HSM 서비스 식별자와 함께 식별자의 이름, 설명, 서비스에 포함된 명령이 나열되어 있습니다.


| 서비스 식별자 | 서비스 이름 | 서비스 설명 | HSM 명령 | 
| --- | --- | --- | --- | 
| 3 | USER\$1MGMT | HSM 사용자 관리 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/quorum-authentication-crypto-officers-first-time-setup.html)  | 
| 4 | MISC\$1CO | 기타 CO 서비스 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/quorum-authentication-crypto-officers-first-time-setup.html)  | 

서비스의 쿼럼 최소값을 가져오려면 다음 예제와 같이 **getMValue** 명령을 사용합니다.

```
aws-cloudhsm > getMValue 3
MValue of service 3[USER_MGMT] on server 0 : [2]
MValue of service 3[USER_MGMT] on server 1 : [2]
```

앞에 나온 **getMValue** 명령의 출력은 HSM 사용자 관리 작업(서비스 3)의 쿼럼 최소값이 이제 2라는 것을 보여 줍니다.

이 단계들을 완료한 후 [관리 유틸리티에 대해 쿼럼 인증이 활성화된 사용자 AWS CloudHSM 관리](quorum-authentication-crypto-officers.md) 섹션을 참조하십시오.

# 관리 유틸리티에 대해 쿼럼 인증이 활성화된 사용자 AWS CloudHSM 관리
<a name="quorum-authentication-crypto-officers"></a>

하드웨어 보안 모듈 AWS CloudHSM [(HSM)의 CO(Acrypto Officer](understanding-users-cmu.md#crypto-officer))는 HSM에서 다음 작업에 대한 쿼럼 인증을 구성할 수 있습니다.
+ HSM 사용자 생성
+ HSM 사용자 삭제
+ 다른 HSM 사용자의 암호 변경

HSM이 쿼럼 인증에 대해 구성된 후에는 CO가 단독으로 HSM 사용자 관리 작업을 수행할 수 없습니다. 다음 예제는 CO가 HSM에서 새 사용자를 생성하려 할 때의 출력을 보여 줍니다. 명령이 실패하고 `RET_MXN_AUTH_FAILED` 오류가 반환됩니다. 이 오류는 쿼럼 인증이 실패했음을 나타냅니다.

```
aws-cloudhsm > createUser CU user1 password
*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. AWS does NOT synchronize these changes automatically with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)? y
Creating User user1(CU) on 2 nodes
createUser failed: RET_MXN_AUTH_FAILED
creating user on server 0(10.0.2.14) failed

Retry/Ignore/Abort?(R/I/A): A
```

HSM 사용자 관리 작업을 수행하려면 CO가 다음 작업을 완료해야 합니다.

1. [*쿼럼 토큰*](#quorum-crypto-officers-get-token)을 가져옵니다.

1. [다른 CO의 승인(서명)을 받습니다](#quorum-crypto-officers-get-approval-signatures).

1. [HSM에 대한 토큰을 승인합니다](#quorum-crypto-officers-approve-token).

1. [HSM 사용자 관리 작업을 수행합니다](#quorum-crypto-officers-use-token).

아직 HSM에서 CO의 쿼럼 인증을 구성하지 않았다면 지금 구성합니다. 자세한 내용은 [최초 설정](quorum-authentication-crypto-officers-first-time-setup.md) 단원을 참조하십시오.

## 1단계. 쿼럼 토큰 가져오기
<a name="quorum-crypto-officers-get-token"></a>

먼저 CO가 cloudhsm\$1mgmt\$1util 명령줄 도구를 사용하여 *쿼럼 토큰*을 요청해야 합니다.

**쿼럼 토큰을 가져오려면**

1. 다음 명령을 사용하여 cloudhsm\$1mgmt\$1util 명령줄 도구를 시작합니다.

   ```
   $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
   ```

1. **loginHSM** 명령을 사용하여 HSM에 CO로 로그인합니다. 자세한 내용은 [CloudHSM 관리 유틸리티(CMU)를 통한 HSM 사용자 관리](manage-hsm-users-cmu.md) 섹션을 참조하십시오.

1. **getToken** 명령을 사용하여 쿼럼 토큰을 가져옵니다. 자세한 내용은 다음 예제를 참조하거나 **help getToken** 명령을 사용하십시오.

**Example – 쿼럼 토큰 가져오기**  
이 예제는 사용자 이름이 officer1인 CO용 쿼럼 토큰을 가져와 이름이 `officer1.token`인 파일에 이 토큰을 저장합니다. 예제 명령을 사용하려면 이들 값을 본인의 것으로 바꿉니다.  
+ *officer1* – 토큰을 가져오는 CO의 이름입니다. 이것은 HSM에 로그인하여 이 명령을 실행하는 CO와 동일해야 합니다.
+ *officer1.token* – 쿼럼 토큰을 저장하는 데 사용할 파일의 이름입니다.
다음 명령에서 `3`은 가져오는 토큰을 사용할 수 있는 *서비스*를 식별합니다. 이 사례에서, 토큰은 HSM 사용자 관리 작업(서비스 3)용입니다. 자세한 내용은 [2단계. HSM에서 쿼럼 최소값 설정](quorum-authentication-crypto-officers-first-time-setup.md#quorum-crypto-officers-set-quorum-minimum-value) 단원을 참조하십시오.  

```
aws-cloudhsm > getToken 3 officer1 officer1.token
getToken success on server 0(10.0.2.14)
Token:
Id:1
Service:3
Node:1
Key Handle:0
User:officer1
getToken success on server 1(10.0.1.4)
Token:
Id:1
Service:3
Node:0
Key Handle:0
User:officer1
```

## 2단계. 승인 CO로부터 서명 받기
<a name="quorum-crypto-officers-get-approval-signatures"></a>

쿼럼 토큰을 보유한 CO는 다른 CO로부터 토큰을 승인받아야 합니다. 승인을 위해 다른 CO는 서명 키를 사용하여 암호화 방식으로 토큰에 서명합니다. 이 절차는 HSM 외부에서 이루어집니다.

토큰에 서명하는 방법은 다양합니다. 다음 예제에서는 [OpenSSL](https://www.openssl.org/)을 사용한 작업 방법을 보여 줍니다. 다른 서명 도구를 사용하려면 해당 도구가 CO의 프라이빗 키(서명 키)를 사용하여 토큰의 SHA-256 다이제스트에 서명하도록 해야 합니다.

**Example – 승인 CO로부터 서명 받기**  
이 예제에서는 토큰을 보유한 CO(officer1)가 2개 이상의 승인을 필요로 합니다. 다음 예제 명령은 두 CO가 OpenSSL을 사용하여 암호화 방식으로 토큰에 서명하는 방법을 보여 줍니다.  
첫 번째 명령에서, officer1이 자신의 토큰에 서명합니다. 다음 예제 명령을 사용하려면 다음 값을 본인의 것으로 바꿉니다.  
+ *officer1.key* 및 *officer2.key* – CO의 서명 키를 포함하는 파일의 이름입니다.
+ *officer1.token.sig1* 및 *officer1.token.sig2* – 서명을 저장하는 데 사용할 파일의 이름입니다. 각 서명을 다른 파일에 저장해야 합니다.
+ *officer1.token* – CO가 서명하는 토큰을 포함하는 파일의 이름입니다.

```
$ openssl dgst -sha256 -sign officer1.key -out officer1.token.sig1 officer1.token
Enter pass phrase for officer1.key:
```
다음 명령에서, officer2가 동일한 토큰에 서명합니다.  

```
$ openssl dgst -sha256 -sign officer2.key -out officer1.token.sig2 officer1.token
Enter pass phrase for officer2.key:
```

## 3단계. HSM에서 서명된 토큰 승인
<a name="quorum-crypto-officers-approve-token"></a>

CO는 다른 CO로부터 최소 승인(서명)을 얻은 후 HSM에서 서명된 토큰을 승인해야 합니다.

**HSM에서 서명된 토큰을 승인하려면**

1. 토큰 승인 파일을 생성합니다. 자세한 내용은 다음 예제를 참조하세요.

1. 다음 명령을 사용하여 cloudhsm\$1mgmt\$1util 명령줄 도구를 시작합니다.

   ```
   $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
   ```

1. **loginHSM** 명령을 사용하여 HSM에 CO로 로그인합니다. 자세한 내용은 [CloudHSM 관리 유틸리티(CMU)를 통한 HSM 사용자 관리](manage-hsm-users-cmu.md) 섹션을 참조하십시오.

1. **approveToken** 명령을 사용하여 서명된 토큰을 승인하고 토큰 승인 파일을 전달합니다. 자세한 내용은 다음 예제를 참조하세요.

**Example – 토큰 승인 파일 생성 및 HSM에서 서명된 토큰 승인**  
토큰 승인 파일은 HSM이 요구하는 특정 형식의 텍스트 파일입니다. 이 파일에는 토큰, 승인자 및 승인자 서명에 관한 정보가 포함됩니다. 다음은 토큰 승인 파일의 예입니다.  

```
# For "Multi Token File Path", type the path to the file that contains
# the token. You can type the same value for "Token File Path", but
# that's not required. The "Token File Path" line is required in any
# case, regardless of whether you type a value.
Multi Token File Path = officer1.token;
Token File Path = ;

# Total number of approvals
Number of Approvals = 2;

# Approver 1
# Type the approver's type, name, and the path to the file that
# contains the approver's signature.
Approver Type = 2; # 2 for CO, 1 for CU
Approver Name = officer1;
Approval File = officer1.token.sig1;

# Approver 2
# Type the approver's type, name, and the path to the file that
# contains the approver's signature.
Approver Type = 2; # 2 for CO, 1 for CU
Approver Name = officer2;
Approval File = officer1.token.sig2;
```
토큰 승인 파일을 생성한 후 CO는 cloudhsm\$1mgmt\$1util 명령줄 도구를 사용하여 HSM에 로그인하고 다음 예제와 같이 **approveToken** 명령을 사용하여 토큰을 승인합니다. *approval.txt*를 토큰 승인 파일의 이름으로 바꿉니다.  

```
aws-cloudhsm > approveToken approval.txt
approveToken success on server 0(10.0.2.14)
approveToken success on server 1(10.0.1.4)
```
이 명령이 성공하면 HSM이 쿼럼 토큰을 승인한 것입니다. 토큰 상태를 확인하려면 다음 예제와 같이 **listTokens** 명령을 사용합니다. 명령의 출력은 토큰이 필요한 수의 승인을 획득한 것을 보여 줍니다.  
토큰 유효 기간은 토큰이 HSM에서 얼마 동안 보관될지를 나타냅니다. 토큰 유효 기간이 경과한 후에도(0초) 토큰을 사용할 수 있습니다.  

```
aws-cloudhsm > listTokens
=====================
    Server 0(10.0.2.14)
=====================
-------- Token - 0 ----------
Token:
Id:1
Service:3
Node:1
Key Handle:0
User:officer1
Token Validity: 506 sec
Required num of approvers : 2
Current num of approvals : 2
Approver-0: officer1
Approver-1: officer2
Num of tokens = 1

=====================
    Server 1(10.0.1.4)
=====================
-------- Token - 0 ----------
Token:
Id:1
Service:3
Node:0
Key Handle:0
User:officer1
Token Validity: 506 sec
Required num of approvers : 2
Current num of approvals : 2
Approver-0: officer1
Approver-1: officer2
Num of tokens = 1

listTokens success
```

## 4단계. 사용자 관리 작업에 토큰 사용
<a name="quorum-crypto-officers-use-token"></a>

이전 단원에서 설명한 대로 CO가 필요한 수의 승인을 획득한 후, CO는 다음의 HSM 사용자 관리 작업 중 하나를 수행할 수 있습니다.
+ [createUser](cloudhsm_mgmt_util-createUser.md) 명령을 사용하여 HSM 사용자를 생성
+ **deleteUser** 명령을 사용하여 HSM 사용자 삭제
+ **changePswd** 명령을 사용하여 다른 HSM 사용자의 암호 변경

이러한 명령을 사용하는 방법은 [HSM 사용자](manage-hsm-users.md) 섹션을 참조하십시오.

CO는 한 작업에만 토큰을 사용할 수 있습니다. 해당 작업이 성공하면 토큰은 더 이상 유효하지 않습니다. 다른 HSM 사용자 관리 작업을 수행하려면 CO는 새로운 쿼럼 토큰을 가져오고, 승인자로부터 새로운 서명을 받고, HSM에서 새로운 토큰을 승인해야 합니다.

**참고**  
MofN 토큰은 현재 로그인 세션이 열려 있는 동안에만 유효합니다. cloudhsm\$1mgmt\$1util에서 로그아웃하거나 네트워크 연결이 끊기면 토큰은 더 이상 유효하지 않습니다. 마찬가지로 승인된 토큰은 cloudhsm\$1mgmt\$1util 내에서만 사용할 수 있으며 다른 애플리케이션에서 인증하는 데는 사용할 수 없습니다.

다음 예제 명령에서는 CO가 HSM에서 새 사용자를 생성합니다.

```
aws-cloudhsm > createUser CU user1 <password>
*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. AWS does NOT synchronize these changes automatically with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)? y
Creating User user1(CU) on 2 nodes
```

이전 명령이 성공한 후 후속 **listUsers** 명령이 새 사용자를 보여 줍니다.

```
aws-cloudhsm > listUsers
Users on server 0(10.0.2.14):
Number of users found:8

    User Id             User Type       User Name                          MofnPubKey    LoginFailureCnt         2FA
         1              PCO             admin                                    NO               0               NO
         2              AU              app_user                                 NO               0               NO
         3              CO              officer1                                YES               0               NO
         4              CO              officer2                                YES               0               NO
         5              CO              officer3                                YES               0               NO
         6              CO              officer4                                YES               0               NO
         7              CO              officer5                                YES               0               NO
         8              CU              user1                                    NO               0               NO
Users on server 1(10.0.1.4):
Number of users found:8

    User Id             User Type       User Name                          MofnPubKey    LoginFailureCnt         2FA
         1              PCO             admin                                    NO               0               NO
         2              AU              app_user                                 NO               0               NO
         3              CO              officer1                                YES               0               NO
         4              CO              officer2                                YES               0               NO
         5              CO              officer3                                YES               0               NO
         6              CO              officer4                                YES               0               NO
         7              CO              officer5                                YES               0               NO
         8              CU              user1                                    NO               0               NO
```

CO가 다른 HSM 사용자 관리 작업을 시도할 경우, 다음 예제와 같이 쿼럼 인증 오류가 발생하며 실패합니다.

```
aws-cloudhsm > deleteUser CU user1
Deleting user user1(CU) on 2 nodes
deleteUser failed: RET_MXN_AUTH_FAILED
deleteUser failed on server 0(10.0.2.14)

Retry/rollBack/Ignore?(R/B/I): I
deleteUser failed: RET_MXN_AUTH_FAILED
deleteUser failed on server 1(10.0.1.4)

Retry/rollBack/Ignore?(R/B/I): I
```

다음 예제와 같이 **listTokens** 명령은 승인된 토큰이 CO에게 없음을 보여 줍니다. 다른 HSM 사용자 관리 작업을 수행하려면 CO는 새로운 쿼럼 토큰을 가져오고, 승인자로부터 새로운 서명을 받고, HSM에서 새로운 토큰을 승인해야 합니다.

```
aws-cloudhsm > listTokens
=====================
    Server 0(10.0.2.14)
=====================
Num of tokens = 0

=====================
    Server 1(10.0.1.4)
=====================
Num of tokens = 0

listTokens success
```

# AWS CloudHSM 관리 유틸리티를 사용하여 쿼럼 최소값 변경
<a name="quorum-authentication-crypto-officers-change-minimum-value"></a>

 AWS CloudHSM [COs)](understanding-users-cmu.md#crypto-officer)[가 쿼럼 인증을 사용할 수 있도록 쿼럼 최소값을 설정한](quorum-authentication-crypto-officers-first-time-setup.md#quorum-crypto-officers-set-quorum-minimum-value) 후 쿼럼 최소값을 변경할 수 있습니다. HSM에서는 승인자의 수가 현재 쿼럼 최소값 이상인 경우에만 쿼럼 최소값을 변경할 수 있습니다. 예를 들어 쿼럼 최소값이 2라면 적어도 2명의 CO가 승인해야 쿼럼 최소값을 변경할 수 있습니다.

쿼럼 최소값을 변경하기 위해 쿼럼 승인을 받으려면 **setMValue** 명령(서비스 4)에 대한 *쿼럼 토큰*이 필요합니다. **setMValue** 명령(서비스 4)에 대한 쿼럼 토큰을 얻으려면 서비스 4의 쿼럼 최소값이 1보다 커야 합니다. 즉, CO(서비스 3)의 쿼럼 최소값을 변경하려면 그전에 서비스 4의 쿼럼 최소값을 변경해야 합니다.

다음 표에는 HSM 서비스 식별자와 함께 식별자의 이름, 설명, 서비스에 포함된 명령이 나열되어 있습니다.


| 서비스 식별자 | 서비스 이름 | 서비스 설명 | HSM 명령 | 
| --- | --- | --- | --- | 
| 3 | USER\$1MGMT | HSM 사용자 관리 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/quorum-authentication-crypto-officers-change-minimum-value.html)  | 
| 4 | MISC\$1CO | 기타 CO 서비스 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/quorum-authentication-crypto-officers-change-minimum-value.html)  | 

**crypto officer의 쿼럼 최소값을 변경하려면**

1. 다음 명령을 사용하여 cloudhsm\$1mgmt\$1util 명령줄 도구를 시작합니다.

   ```
   $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
   ```

1. **loginHSM** 명령을 사용하여 HSM에 CO로 로그인합니다. 자세한 내용은 [CloudHSM 관리 유틸리티(CMU)를 통한 HSM 사용자 관리](manage-hsm-users-cmu.md) 섹션을 참조하십시오.

1. **getMValue** 명령을 사용하여 서비스 3의 쿼럼 최소값을 가져옵니다. 자세한 내용은 다음 예제를 참조하세요.

1. **getMValue** 명령을 사용하여 서비스 4의 쿼럼 최소값을 가져옵니다. 자세한 내용은 다음 예제를 참조하세요.

1. 서비스 4의 쿼럼 최소값이 서비스 3의 값보다 작다면 **setMValue** 명령을 사용하여 서비스 4의 값을 변경합니다. 서비스 3의 값보다 크거나 같은 값으로 서비스 4의 값을 변경합니다. 자세한 내용은 다음 예제를 참조하세요.

1. [*쿼럼 토큰*을 가져오고](quorum-authentication-crypto-officers.md#quorum-crypto-officers-get-token) 토큰을 사용할 수 있는 서비스로 서비스 4를 지정하도록 주의하십시오.

1. [다른 CO의 승인(서명)을 받습니다](quorum-authentication-crypto-officers.md#quorum-crypto-officers-get-approval-signatures).

1. [HSM에 대한 토큰을 승인합니다](quorum-authentication-crypto-officers.md#quorum-crypto-officers-approve-token).

1. **setMValue** 명령을 사용하여 서비스 3(CO가 수행하는 사용자 관리 작업)의 쿼럼 최소값을 변경합니다.

**Example – 서비스 4의 쿼럼 최소값 가져오기 및 변경**  
다음 예제 명령은 서비스 3의 쿼럼 최소값이 현재 2임을 보여 줍니다.  

```
aws-cloudhsm > getMValue 3
MValue of service 3[USER_MGMT] on server 0 : [2]
MValue of service 3[USER_MGMT] on server 1 : [2]
```
다음 예제 명령은 서비스 4의 쿼럼 최소값이 현재 1임을 보여 줍니다.  

```
aws-cloudhsm > getMValue 4
MValue of service 4[MISC_CO] on server 0 : [1]
MValue of service 4[MISC_CO] on server 1 : [1]
```
서비스 4의 쿼럼 최소값을 변경하려면 **setMValue** 명령을 사용하여 서비스 3의 쿼럼 최소값보다 크거나 같은 값을 설정합니다. 다음 예제는 서비스 4의 쿼럼 최소값을 서비스 3에 대해 설정된 값과 같은 2로 설정합니다.  

```
aws-cloudhsm > setMValue 4 2
*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. AWS does NOT synchronize these changes automatically with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)? y
Setting M Value(2) for 4 on 2 nodes
```
다음 명령은 서비스 3과 서비스 4의 쿼럼 최소값이 이제 2임을 보여 줍니다.  

```
aws-cloudhsm > getMValue 3
MValue of service 3[USER_MGMT] on server 0 : [2]
MValue of service 3[USER_MGMT] on server 1 : [2]
```

```
aws-cloudhsm > getMValue 4
MValue of service 4[MISC_CO] on server 0 : [2]
MValue of service 4[MISC_CO] on server 1 : [2]
```