

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

# 의 HSM 사용자 AWS CloudHSM
<a name="manage-hsm-users"></a>

암호화 처리에 AWS CloudHSM 클러스터를 사용하려면 먼저 클러스터의 하드웨어 보안 모듈(HSM)에서 사용자와 [키를](manage-keys.md) 생성해야 합니다.

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

 에서는 [CloudHSM CLI](cloudhsm_cli-getting-started.md) 또는 [CloudHSM 관리 유틸리티(CMU)](cloudhsm_mgmt_util-getting-started.md) 명령줄 도구를 사용하여 HSM에서 사용자를 생성하고 관리 AWS CloudHSM해야 합니다. CloudHSM CLI는 [최신 SDK 버전 시리즈](use-hsm.md)와 함께 사용하도록 설계된 반면 CMU는 [이전 SDK 버전 시리즈](choose-client-sdk.md)와 함께 사용하도록 설계되었습니다.

 AWS CloudHSM에서 HSM 사용자를 관리하는 방법에 대한 자세한 내용은 다음 주제를 참조하세요. 쿼럼 인증(N 중 M 액세스 제어라고도 함)을 사용하는 방법도 배울 수 있습니다.

**Topics**
+ [CloudHSM CLI를 사용하는 사용자 관리](manage-hsm-users-chsm-cli.md)
+ [CMU를 사용하는 사용자 관리](manage-hsm-users-cmu.md)

# CloudHSM CLI를 사용하는 HSM 사용자 관리
<a name="manage-hsm-users-chsm-cli"></a>

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

이 항목에서는 CloudHSM CLI를 사용하여 HSM 사용자를 관리하는 방법에 대한 단계별 지침을 제공합니다.

**Topics**
+ [사전 조건](manage-hsm-users-chsm-cli-prereq.md)
+ [사용자 유형](understanding-users.md)
+ [권한 테이블](user-permissions-table-chsm-cli.md)
+ [관리자 생성](create-admin-cloudhsm-cli.md)
+ [CU 생성](create-user-cloudhsm-cli.md)
+ [모든 사용자 나열](list-users-cloudhsm-cli.md)
+ [암호 변경](change-user-password-cloudhsm-cli.md)
+ [사용자 삭제](delete-user-cloudhsm-cli.md)
+ [사용자 MFA 관리](login-mfa-token-sign.md)
+ [쿼럼 인증 관리(N 중 M)](quorum-auth-chsm-cli.md)

# CloudHSM CLI에서의 사용자 관리에 필요한 사전 조건
<a name="manage-hsm-users-chsm-cli-prereq"></a>

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

**Topics**
+ [HSM IP 주소 가져오기](#manage-chsm-cli-users-ip)
+ [CloudHSM CLI 다운로드](#get-cli-users-cloudhsm-cli)

## 에서 HSM의 IP 주소 가져오기 AWS CloudHSM
<a name="manage-chsm-cli-users-ip"></a>

 CloudHSM CLI를 사용하려면 구성 툴을 사용하여 로컬 구성을 업데이트해야 합니다. CloudHSM CLI를 사용하여 구성 툴을 실행하는 방법에 대한 지침은 [AWS CloudHSM 명령줄 인터페이스(CLI) 시작하기](cloudhsm_cli-getting-started.md) 단원을 참조하십시오. `-a` 파라미터를 사용하려면 클러스터에 HSM의 IP 주소를 추가해야 합니다. HSM이 여러 개 있는 경우 모든 IP 주소를 사용할 수 있습니다. 이렇게 하면 CloudHSM CLI가 전체 클러스터에서 변경한 내용을 전파할 수 있습니다. CloudHSM CLI는 로컬 파일을 사용하여 클러스터 정보를 추적한다는 점을 기억하십시오. 특정 호스트에서 CloudHSM CLI를 마지막으로 사용한 이후 클러스터가 변경된 경우 해당 호스트에 저장된 로컬 구성 파일에 해당 변경 사항을 추가해야 합니다. CloudHSM CLI를 사용하는 동안에는 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",
  ...
  ```

## CloudHSM CLI 다운로드
<a name="get-cli-users-cloudhsm-cli"></a>

최신 버전의 CloudHSM CLI는 Client SDK 5의 HSM 사용자 관리 작업에 사용할 수 있습니다. CloudHSM CLI를 다운로드하고 설치하려면 [ CloudHSM CLI 설치 및 구성](gs_cloudhsm_cli-install.md)의 지침을 따르십시오.

# CloudHSM CLI용 HSM 사용자 유형
<a name="understanding-users"></a>

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

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

**Topics**
+ [활성화되지 않은 관리자](#unactivated-admin)
+ [관리자](#admin)
+ [CU(Crypto User)](#crypto-user-chsm-cli)
+ [AU(Appliance User)](#appliance-user-chsm-cli)

## 활성화되지 않은 관리자
<a name="unactivated-admin"></a>

CloudHSM CLI에서 활성화되지 않은 관리자는 활성화되지 않은 AWS CloudHSM 클러스터의 첫 번째 HSM에만 존재하는 임시 사용자입니다. [클러스터를 활성화하려면](activate-cluster.md) CloudHSM CLI에서 **cluster activate** 명령을 실행합니다. 이 명령을 실행하면 활성화되지 않은 관리자에게 암호를 변경하라는 메시지가 표시됩니다. 암호를 변경한 후 활성화되지 않은 관리자는 관리자가 됩니다.

## 관리자
<a name="admin"></a>

CloudHSM CLI에서 관리자는 사용자 관리 작업을 수행할 수 있습니다. 예를 들어, 사용자를 생성 및 삭제하고 사용자 암호를 변경할 수 있습니다. 관리자에 대한 자세한 내용은 [CloudHSM CLI용 HSM 사용자 권한 테이블](user-permissions-table-chsm-cli.md) 단원을 참조하십시오.

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

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

자세한 내용은 [CloudHSM CLI용 HSM 사용자 권한 테이블](user-permissions-table-chsm-cli.md) 단원을 참조하십시오.

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

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

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

# CloudHSM CLI용 HSM 사용자 권한 테이블
<a name="user-permissions-table-chsm-cli"></a>

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


|  | 관리자 | 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] 키 관리 함수에는 키 속성 생성, 삭제, 래핑, 언래핑, 수정이 포함됩니다.

# CloudHSM CLI를 사용하여 HSM 사용자 관리자 생성
<a name="create-admin-cloudhsm-cli"></a>

CloudHSM CLI를 사용하여 하드웨어 보안 모듈(HSM) 관리자를 생성하는 방법은 다음과 같습니다.

1. 다음 명령을 사용하여 CloudHSM CLI 대화형 모드를 시작합니다.

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

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. **login** 명령을 사용하고 클러스터에 관리자로 로그인합니다.

   ```
   aws-cloudhsm > login --username <username> --role admin
   ```

1. 시스템이 암호를 묻는 메시지를 표시합니다. 암호를 입력하면 명령이 성공했다는 결과가 출력됩니다.

   ```
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<username>",
       "role": "admin"
     }
   }
   ```

1. 다음 명령을 입력하여 을 생성합니다:

   ```
   aws-cloudhsm > user create --username <username> --role admin
   ```

1. 데이터베이스 사용자의 암호를 입력합니다.

1. 암호를 다시 입력하여 입력한 암호가 정확한지 확인합니다.

# CloudHSM CLI를 사용하여 HSM Crypto User 생성
<a name="create-user-cloudhsm-cli"></a>

CloudHSM CLI를 사용하여 하드웨어 보안 모듈(HSM) Crypto User(CU)를 생성하는 방법은 다음과 같습니다.

1. 다음 명령을 사용하여 CloudHSM CLI 대화형 모드를 시작합니다.

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

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. **login** 명령을 사용하고 클러스터에 관리자로 로그인합니다.

   ```
   aws-cloudhsm > login --username <username> --role admin
   ```

1. 시스템이 암호를 묻는 메시지를 표시합니다. 암호를 입력하면 명령이 성공했다는 결과가 출력됩니다.

   ```
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<USERNAME>",
       "role": "admin"
     }
   }
   ```

1. 다음 명령을 입력하여 crypto user를 생성합니다:

   ```
   aws-cloudhsm > user create --username <username> --role crypto-user
   ```

1. 새 crypto user의 암호를 입력합니다.

1. 암호를 다시 입력하여 입력한 암호가 정확한지 확인합니다.

# CloudHSM CLI를 사용하여 클러스터의 모든 HSM 사용자 나열
<a name="list-users-cloudhsm-cli"></a>

 CloudHSM CLI에서 **user list** 명령을 사용하여 AWS CloudHSM 클러스터의 HSM을 나열합니다. **user list**를 실행하기 위해 로그인할 필요는 없습니다. 모든 사용자 유형에서 사용자를 나열할 수 있습니다.

**다음 단계에 따라 클러스터의 모든 사용자를 나열하십시오**

1. 다음 명령을 사용하여 CloudHSM CLI 대화형 모드를 시작합니다.

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

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. 다음 명령을 입력하여 클러스터의 사용자를 나열합니다:

   ```
   aws-cloudhsm > user list
   ```

**user list**에 대한 자세한 내용은 [사용자 목록](cloudhsm_cli-user-list.md)을 참조하십시오.

# CloudHSM CLI를 사용하여 HSM 사용자 암호 변경
<a name="change-user-password-cloudhsm-cli"></a>

 CloudHSM CLI에서 **user change-password** 명령을 사용하여 하드웨어 보안 모듈(HSM) 사용자의 암호를 변경합니다.

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

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

**암호 변경**

1. 다음 명령을 사용하여 CloudHSM CLI 대화형 모드를 시작합니다.

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

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. **login** 명령을 사용하고 암호를 변경할 사용자로서 로그인합니다.

   ```
   aws-cloudhsm > login --username <username> --role <role>
   ```

1. 사용자의 암호를 입력합니다.

   ```
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<username>",
       "role": "<role>"
     }
   }
   ```

1. **user change-password** 명령을 입력합니다.

   ```
   aws-cloudhsm > user change-password --username <username> --role <role>
   ```

1. 새 암호를 입력합니다.

1. 새 암호를 다시 입력합니다.

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

1. 다음 명령을 사용하여 CloudHSM CLI 대화형 모드를 시작합니다.

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

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. CloudHSM CLI를 사용하여 관리자로 로그인합니다.

   ```
   aws-cloudhsm > login --username <admin> --role admin
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<admin>",
       "role": "admin"
     }
   }
   ```

1. 암호를 변경할 사용자의 사용자 이름과 함께 **user change-password** 명령을 입력합니다.

   ```
   aws-cloudhsm > user change-password --username <username> --role <role>
   ```

1. 새 암호를 입력합니다.

1. 새 암호를 다시 입력합니다.

**user change-password**에 대한 자세한 정보는, [사용자 암호 변경](cloudhsm_cli-user-change-password.md)을 참조하십시오.

# CloudHSM CLI를 사용하여 HSM 사용자 삭제
<a name="delete-user-cloudhsm-cli"></a>

CloudHSM CLI에서 **user delete**를 사용하여 하드웨어 보안 모듈(HSM) 사용자를 삭제합니다. 다른 사용자를 삭제하려면 관리자로 로그인해야 합니다.

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

**사용자 삭제**

1. 다음 명령을 사용하여 CloudHSM CLI 대화형 모드를 시작합니다.

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

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. **login** 명령을 사용하고 클러스터에 관리자로 로그인합니다.

   ```
   aws-cloudhsm > login --username <username> --role admin
   ```

1. 시스템이 암호를 묻는 메시지를 표시합니다. 암호를 입력하면 명령이 성공했다는 결과가 출력됩니다.

   ```
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<username>",
       "role": "admin"
     }
   }
   ```

1. **user delete** 명령을 사용하여 사용자를 삭제합니다.

   ```
   aws-cloudhsm > user delete --username <username> --role <role>
   ```

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

# CloudHSM CLI를 사용하여 HSM 사용자용 MFA 관리
<a name="login-mfa-token-sign"></a>

보안을 강화하기 위해 AWS CloudHSM 클러스터를 보호하는 데 도움이 되도록 사용자를 위한 다중 인증(MFA)을 구성할 수 있습니다.

MFA 지원 하드웨어 보안 모듈(HSM) 사용자 계정으로 클러스터에 로그인하면 CloudHSM CLI에 암호(알 수 있는 첫 번째 요소)를 제공하고 CloudHSM CLI는 토큰을 제공하고 토큰에 사인하라는 메시지를 표시합니다.

가지고 있는 두 번째 요소를 제공하려면 이미 생성하여 HSM 사용자와 연결한 키 페어의 프라이빗 키로 토큰에 서명합니다. 클러스터에 액세스하려면 사인된 토큰을 CloudHSM CLI에 제공합니다.

사용자에 대한 MFA 설정에 대한 자세한 내용은 [CloudHSM CLI용 MFA 설정](set-up-mfa-for-cloudhsm-cli.md) 섹션을 참조하세요

다음 주제에는 AWS CloudHSM에서의 쿼럼 인증 작업에 대한 자세한 내용을 제공합니다.

**Topics**
+ [쿼럼 인증](quorum-mfa-cloudhsm-cli.md)
+ [키 페어 요구 사항](mfa-key-pair-cloudhsm-cli.md)
+ [MFA 설정](set-up-mfa-for-cloudhsm-cli.md)
+ [사용자 생성](create-mfa-users-cloudhsm-cli.md)
+ [사용자 로그인](login-mfa-cloudhsm-cli.md)
+ [키 순환](rotate-mfa-cloudhsm-cli.md)
+ [MFA 퍼블릭 키 등록 취소](deregister-mfa-cloudhsm-cli.md)
+ [토큰 파일 참조](reference-mfa-cloudhsm-cli.md)

# CloudHSM CLI를 사용한 AWS CloudHSM 클러스터의 쿼럼 인증 및 MFA
<a name="quorum-mfa-cloudhsm-cli"></a>

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

쿼럼 인증에 대한 자세한 내용은 [쿼럼 인증 관리(N 중 M)](quorum-auth-chsm-cli.md) 단원을 참조하십시오.

# CloudHSM CLI AWS CloudHSM 를 사용하기 위한 MFA 키 페어 요구 사항
<a name="mfa-key-pair-cloudhsm-cli"></a>

의 하드웨어 보안 모듈(HSM) 사용자에 대해 다중 인증(MFA)을 활성화하려면 새 키 페어를 생성하거나 다음 요구 사항을 충족하는 기존 키를 사용할 AWS CloudHSM수 있습니다.
+ **키 유형: **비대칭
+ **키 사용:** 사인 및 확인
+ **키 사양: ** RSA\$12048
+ **사인 알고리즘에 포함:** sha256WithRSAEncryption

**참고**  
쿼럼 인증을 사용하거나 쿼럼 인증을 사용하려는 경우 [CloudHSM CLI를 사용한 AWS CloudHSM 클러스터의 쿼럼 인증 및 MFA](quorum-mfa-cloudhsm-cli.md) 단원을 참조하십시오

CloudHSM CLI와 키 페어를 사용하여 MFA가 활성화된 새 관리자 사용자를 생성할 수 있습니다.

# CloudHSM CLI용 MFA 설정
<a name="set-up-mfa-for-cloudhsm-cli"></a>

다음 단계에 따라 CloudHSM CLI용 다중 인증(MFA)을 설정합니다.

1. 토큰 사인 전략을 사용하여 MFA를 설정하려면 먼저 2048비트 RSA 프라이빗 키와 관련 퍼블릭 키를 생성해야 합니다.

   ```
   $ openssl genrsa -out officer1.key 2048
   Generating RSA private key, 2048 bit long modulus (2 primes)
   ...........................................................+++++
   ....................................................................+++++
   e is 65537 (0x010001)
   
   $ openssl rsa -in officer1.key -outform PEM -pubout -out officer1.pub
   writing RSA key
   ```

1. 다음 명령을 사용하여 대화형 모드에서 CLI를 시작합니다.

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

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. CloudHSM CLI를 사용하여 사용자 계정에 로그인합니다.

   ```
   aws-cloudhsm > login --username <admin> --role <admin> --cluster-id <cluster ID>
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<admin>",
       "role": "<admin>"
     }
   }
   ```

1. 그런 다음 명령을 실행하여 MFA 전략을 변경합니다. 파라미터 `--token`을 제공해야 합니다. 이 파라미터 변수는 사인되지 않은 토큰이 기록되는 파일을 지정합니다.

   ```
   aws-cloudhsm > user change-mfa token-sign --token unsigned-tokens.json --username <username> --role crypto-user --change-quorum
   Enter password:
   Confirm password:
   ```

1. 이제 사인이 필요한 사인되지 않은 토큰이 들어 있는 파일이 생성됨: `unsigned-tokens.json` 이 파일의 토큰 수는 클러스터의 HSM 수에 따라 달라집니다. 각 토큰은 하나의 HSM을 나타냅니다. 이 파일은 JSON 형식이며 프라이빗 키가 있음을 증명하기 위해 사인이 필요한 토큰을 포함하고 있습니다.

   ```
   $ cat unsigned-tokens.json
   {
     "version": "2.0",
     "tokens": [
   {
       {
         "unsigned": "Vtf/9QOFY45v/E1osvpEMr59JsnP/hLDm4ItOO2vqL8=",
         "signed": ""
       },
       {
         "unsigned": "wVbC0/5IKwjyZK2NBpdFLyI7BiayZ24YcdUdlcxLwZ4=",
         "signed": ""
       },
       {
         "unsigned": "z6aW9RzErJBL5KqFG5h8lhTVt9oLbxppjod0Ebysydw=",
         "signed": ""
       }
     ]
   }
   ```

1. 다음 단계는 1단계에서 생성한 프라이빗 키를 사용하여 이러한 토큰에 사인하는 것입니다. 사인을 파일에 다시 배치합니다. 먼저 base64로 인코딩된 토큰을 추출하고 디코딩해야 합니다.

   ```
   $ echo "Vtf/9QOFY45v/E1osvpEMr59JsnP/hLDm4ItOO2vqL8=" > token1.b64
   $ echo "wVbC0/5IKwjyZK2NBpdFLyI7BiayZ24YcdUdlcxLwZ4=" > token2.b64
   $ echo "z6aW9RzErJBL5KqFG5h8lhTVt9oLbxppjod0Ebysydw=" > token3.b64
   $ base64 -d token1.b64 > token1.bin
   $ base64 -d token2.b64 > token2.bin
   $ base64 -d token3.b64 > token3.bin
   ```

1. 이제 1단계에서 만든 RSA 프라이빗 키를 사용하여 사인할 수 있는 바이너리 토큰이 생겼습니다.

   ```
   $ openssl pkeyutl -sign \
         -inkey officer1.key \
         -pkeyopt digest:sha256 \
         -keyform PEM \
         -in token1.bin \
         -out token1.sig.bin
   $ openssl pkeyutl -sign \
         -inkey officer1.key \
         -pkeyopt digest:sha256 \
         -keyform PEM \
         -in token2.bin \
         -out token2.sig.bin
   $ openssl pkeyutl -sign \
         -inkey officer1.key \
         -pkeyopt digest:sha256 \
         -keyform PEM \
         -in token3.bin \
         -out token3.sig.bin
   ```

1. 이제 토큰의 바이너리 서명이 생겼습니다. base64를 사용하여 인코딩한 다음 토큰 파일에 다시 배치해야 합니다.

   ```
   $ base64 -w0 token1.sig.bin > token1.sig.b64
   $ base64 -w0 token2.sig.bin > token2.sig.b64 
   $ base64 -w0 token3.sig.bin > token3.sig.b64
   ```

1. 마지막으로 base64 값을 복사하여 토큰 파일에 다시 붙여넣을 수 있습니다:

   ```
   {
     "version": "2.0",
     "tokens": [
       {
         "unsigned": "1jqwxb9bJOUUQLiNb7mxXS1uBJsEXh0B9nj05BqnPsE=",
         "signed": "eiw3fZeCKIY50C4zPeg9Rt90M1Qlq3WlJh6Yw7xXm4nF6e9ETLE39+9M+rUqDWMRZjaBfaMbg5d9yDkz5p13U7ch2tlF9LoYabsWutkT014KRq/rcYMvFsU9n/Ey/TK0PVaxLN42X+pebV4juwMhN4mK4CzdFAJgM+UGBOj4yB9recpOBB9K8QFSpJZALSEdDgUc/mS1eDq3rU0int6+4NKuLQjpR+LSEIWRZ6g6+MND2vXGskxHjadCQ09L7Tz8VcWjKDbxJcBiGKvkqyozl9zrGo8fA3WHBmwiAgS61Merx77ZGY4PFR37+j/YMSC14prCN15DtMRv2xA1SGSb4w=="
       },
       {
         "unsigned": "LMMFc34ASPnvNPFzBbMbr9FProS/Zu2P8zF/xzk5hVQ=",
         "signed": "HBImKnHmw+6R2TpFEpfiAg4+hu2pFNwn43ClhKPkn2higbEhUD0JVi+4MerSyvU/NN79iWVxDvJ9Ito+jpiRQjTfTGEoIteyuAr1v/Bzh+HjmrO53OQpZaJ/VXGIgApD0myuu/ZGNKQTCSkkL7+V81FG7yR1Nm22jUeGa735zvm/E+cenvZdy0VVx6A7WeWrl3JEKKBweHbi+7BwbaW+PTdCuIRd4Ug76Sy+cFhsvcG1k7cMwDh8MgXzIZ2m1f/hdy2j8qAxORTLlmwyUOYvPYOvUhc+s83hx36QpGwGcD7RA0bPT5OrTx7PHd0N1CL+Wwy91We8yIOFBS6nxo1R7w=="
       },
       {
         "unsigned": "dzeHbwhiVXQqcUGj563z51/7sLUdxjL93SbOUyZRjH8=",
         "signed": "VgQPvrTsvGljVBFxHnswduq16x8ZrnxfcYVYGf/N7gEzI4At3GDs2EVZWTRdvS0uGHdkFYp1apHgJZ7PDVmGcTkIXVD2lFYppcgNlSzkYlftr5EOjqS9ZjYEqgGuB4g//MxaBaRbJai/6BlcE92NIdBusTtreIm3yTpjIXNAVoeRSnkfuw7wZcL96QoklNb1WUuSHw+psUyeIVtIwFMHEfFoRC0t+VhmnlnFnkjGPb9W3Aprw2dRRvFM3R2ZTDvMCiOYDzUCd43GftGq2LfxH3qSD51oFHglHQVOY0jyVzzlAvub5HQdtOQdErIeO0/9dGx5yot07o3xaGl5yQRhwA=="
       }
     ]
   }
   ```

1. 이제 토큰 파일에 필요한 모든 사인이 포함되었으므로 계속 진행할 수 있습니다. 사인된 토큰이 들어 있는 파일 이름을 입력하고 Enter 키를 누릅니다. 마지막으로 퍼블릭 키의 경로를 입력합니다.

   ```
   Enter signed token file path (press enter if same as the unsigned token file):
   Enter public key PEM file path:officer1.pub
   {
     "error_code": 0,
     "data": {
       "username": "<username>",
       "role": "crypto-user"
     }
   }
   ```

   이제 사용자를 MFA로 설정했습니다.

   ```
   {
       "username": "<username>",
       "role": "crypto-user",
       "locked": "false",
       "mfa": [
         {
           "strategy": "token-sign",
           "status": "enabled"
         }
       ],
       "cluster-coverage": "full"
   },
   ```

# CloudHSM CLI용 MFA가 활성화된 사용자 생성
<a name="create-mfa-users-cloudhsm-cli"></a>

다음 단계에 따라 다중 인증(MFA)이 활성화된 AWS CloudHSM 사용자를 생성합니다.

1. CloudHSM CLI를 사용하여 HSM에 관리자로 로그인합니다.

1. [**user create**](cloudhsm_cli-user-create.md) 명령을 사용하여 원하는 사용자를 생성합니다. 그런 다음 [CloudHSM CLI용 MFA 설정](set-up-mfa-for-cloudhsm-cli.md)의 단계에 따라 사용자를 위한 MFA를 설정합니다.

# CloudHSM CLI용 MFA가 활성화된 사용자 로그인
<a name="login-mfa-cloudhsm-cli"></a>

다음 단계에 따라 멀티 팩터 인증(MFA)이 활성화된 AWS CloudHSM 사용자를 로그인합니다.

1. CloudHSM CLI의 [**login mfa-token-sign**](cloudhsm_cli-login-mfa-token-sign.md) 명령을 사용하여 MFA를 활성화한 사용자에 대해 MFA로 로그인 프로세스를 시작할 수 있습니다.

   ```
   aws-cloudhsm > login --username <username> --role <role> mfa-token-sign --token <unsigned-tokens.json>
   Enter password:
   ```

1. 암호를 입력합니다. 그러면 사인되지 않은/사인된 토큰 페어가 포함된 토큰 파일의 경로를 입력하라는 메시지가 표시됩니다. 여기서 사인된 토큰은 프라이빗 키를 사용하여 생성된 토큰입니다.

   ```
   aws-cloudhsm > login --username <username> --role <role> mfa-token-sign --token <unsigned-tokens.json>
   Enter password:
   Enter signed token file path (press enter if same as the unsigned token file):
   ```

1. 사인된 토큰 파일 경로를 입력하라는 메시지가 표시되면 별도의 터미널에서 사인되지 않은 토큰 파일을 검사할 수 있습니다. 사인이 필요한 사인되지 않은 토큰이 있는 파일 식별: `<unsigned-tokens.json>` 이 파일의 토큰 수는 클러스터의 HSM 수에 따라 달라집니다. 각 토큰은 하나의 HSM을 나타냅니다. 이 파일은 JSON 형식이며 프라이빗 키가 있음을 증명하기 위해 사인이 필요한 토큰을 포함하고 있습니다.

   ```
   $ cat <unsigned-tokens.json>
   {
     "version": "2.0",
     "tokens": [
       {
         "unsigned": "Vtf/9QOFY45v/E1osvpEMr59JsnP/hLDm4ItOO2vqL8=",
         "signed": ""
       },
       {
         "unsigned": "wVbC0/5IKwjyZK2NBpdFLyI7BiayZ24YcdUdlcxLwZ4=",
         "signed": ""
       },
       {
         "unsigned": "z6aW9RzErJBL5KqFG5h8lhTVt9oLbxppjod0Ebysydw=",
         "signed": ""
       }
     ]
   }
   ```

1. 2단계에서 생성한 프라이빗 키로 사인되지 않은 토큰에 사인합니다. 먼저 base64로 인코딩된 토큰을 추출하고 디코딩해야 합니다.

   ```
   $ echo "Vtf/9QOFY45v/E1osvpEMr59JsnP/hLDm4ItOO2vqL8=" > token1.b64
   $ echo "wVbC0/5IKwjyZK2NBpdFLyI7BiayZ24YcdUdlcxLwZ4=" > token2.b64
   $ echo "z6aW9RzErJBL5KqFG5h8lhTVt9oLbxppjod0Ebysydw=" > token3.b64
   $ base64 -d token1.b64 > token1.bin 
   $ base64 -d token2.b64 > token2.bin
   $ base64 -d token3.b64 > token3.bin
   ```

1. 이제 바이너리 토큰이 생겼습니다. [MFA 설정 단계 1](set-up-mfa-for-cloudhsm-cli.md)에서 이전에 생성한 RSA 프라이빗 키를 사용하여 사인합니다.

   ```
   $ openssl pkeyutl -sign \
         -inkey officer1.key \
         -pkeyopt digest:sha256 \
         -keyform PEM \
         -in token1.bin \
         -out token1.sig.bin
   $ openssl pkeyutl -sign \
         -inkey officer1.key \
         -pkeyopt digest:sha256 \
         -keyform PEM \
         -in token2.bin \
         -out token2.sig.bin
   $ openssl pkeyutl -sign \
         -inkey officer1.key \
         -pkeyopt digest:sha256 \
         -keyform PEM \
         -in token3.bin \
         -out token3.sig.bin
   ```

1. 이제 토큰의 바이너리 사인이 생겼습니다. base64를 사용하여 인코딩한 다음 토큰 파일에 다시 배치합니다.

   ```
   $ base64 -w0 token1.sig.bin > token1.sig.b64
   $ base64 -w0 token2.sig.bin > token2.sig.b64
   $ base64 -w0 token3.sig.bin > token3.sig.b64
   ```

1. 마지막으로 base64 값을 복사하여 토큰 파일에 다시 붙여넣습니다.

   ```
   {
     "version": "2.0",
     "tokens": [
       {
         "unsigned": "1jqwxb9bJOUUQLiNb7mxXS1uBJsEXh0B9nj05BqnPsE=",
         "signed": "eiw3fZeCKIY50C4zPeg9Rt90M1Qlq3WlJh6Yw7xXm4nF6e9ETLE39+9M+rUqDWMRZjaBfaMbg5d9yDkz5p13U7ch2tlF9LoYabsWutkT014KRq/rcYMvFsU9n/Ey/TK0PVaxLN42X+pebV4juwMhN4mK4CzdFAJgM+UGBOj4yB9recpOBB9K8QFSpJZALSEdDgUc/mS1eDq3rU0int6+4NKuLQjpR+LSEIWRZ6g6+MND2vXGskxHjadCQ09L7Tz8VcWjKDbxJcBiGKvkqyozl9zrGo8fA3WHBmwiAgS61Merx77ZGY4PFR37+j/YMSC14prCN15DtMRv2xA1SGSb4w=="
       },
       {
         "unsigned": "LMMFc34ASPnvNPFzBbMbr9FProS/Zu2P8zF/xzk5hVQ=",
         "signed": "HBImKnHmw+6R2TpFEpfiAg4+hu2pFNwn43ClhKPkn2higbEhUD0JVi+4MerSyvU/NN79iWVxDvJ9Ito+jpiRQjTfTGEoIteyuAr1v/Bzh+HjmrO53OQpZaJ/VXGIgApD0myuu/ZGNKQTCSkkL7+V81FG7yR1Nm22jUeGa735zvm/E+cenvZdy0VVx6A7WeWrl3JEKKBweHbi+7BwbaW+PTdCuIRd4Ug76Sy+cFhsvcG1k7cMwDh8MgXzIZ2m1f/hdy2j8qAxORTLlmwyUOYvPYOvUhc+s83hx36QpGwGcD7RA0bPT5OrTx7PHd0N1CL+Wwy91We8yIOFBS6nxo1R7w=="
       },
       {
         "unsigned": "dzeHbwhiVXQqcUGj563z51/7sLUdxjL93SbOUyZRjH8=",
         "signed": "VgQPvrTsvGljVBFxHnswduq16x8ZrnxfcYVYGf/N7gEzI4At3GDs2EVZWTRdvS0uGHdkFYp1apHgJZ7PDVmGcTkIXVD2lFYppcgNlSzkYlftr5EOjqS9ZjYEqgGuB4g//MxaBaRbJai/6BlcE92NIdBusTtreIm3yTpjIXNAVoeRSnkfuw7wZcL96QoklNb1WUuSHw+psUyeIVtIwFMHEfFoRC0t+VhmnlnFnkjGPb9W3Aprw2dRRvFM3R2ZTDvMCiOYDzUCd43GftGq2LfxH3qSD51oFHglHQVOY0jyVzzlAvub5HQdtOQdErIeO0/9dGx5yot07o3xaGl5yQRhwA=="
       }
     ]
   }
   ```

1. 이제 토큰 파일에 필요한 모든 사인이 포함되었으므로 계속 진행할 수 있습니다. 사인된 토큰이 들어 있는 파일 이름을 입력하고 Enter 키를 누릅니다. 이제 성공적으로 로그인할 수 있습니다.

   ```
   aws-cloudhsm > login --username <username> --role <role> mfa-token-sign --token <unsigned-tokens.json>
   Enter password:
   Enter signed token file path (press enter if same as the unsigned token file):
   {
     "error_code": 0,
     "data": {
       "username": "<username>",
       "role": "<role>"
     }
   }
   ```

# CloudHSM CLI용 MFA가 활성화된 사용자의 키 순환
<a name="rotate-mfa-cloudhsm-cli"></a>

멀티 팩터 인증(MFA)이 활성화된 AWS CloudHSM 사용자의 키를 교체하려면 다음 단계를 따르세요.

1. CloudHSM CLI를 사용하여 관리자 또는 MFA가 활성화된 특정 사용자로 HSM에 로그인합니다(자세한 내용은 [MFA가 활성화된 상태로 사용자 로그인]() 참조).

1. 그런 다음 명령을 실행하여 MFA 전략을 변경합니다. 파라미터 **--token**을 제공해야 합니다. 이 파라미터 변수는 사인되지 않은 토큰이 기록되는 파일을 지정합니다.

   ```
   aws-cloudhsm > user change-mfa token-sign --token unsigned-tokens.json --username <username> --role crypto-user --change-quorum
   Enter password:
   Confirm password:
   ```

1. 사인이 필요한 사인되지 않은 토큰이 있는 파일 식별: `unsigned-tokens.json` 이 파일의 토큰 수는 클러스터의 HSM 수에 따라 달라집니다. 각 토큰은 하나의 HSM을 나타냅니다. 이 파일은 JSON 형식이며 프라이빗 키가 있음을 증명하기 위해 사인이 필요한 토큰을 포함하고 있습니다. 이 키는 현재 등록된 퍼블릭 키를 교체하는 데 사용하려는 새 RSA 공개/프라이빗 키 페어의 새 프라이빗 키입니다.

   ```
   $ cat unsigned-tokens.json
   {
     "version": "2.0",
     "tokens": [
       {
         "unsigned": "Vtf/9QOFY45v/E1osvpEMr59JsnP/hLDm4ItOO2vqL8=",
         "signed": ""
       },
       {
         "unsigned": "wVbC0/5IKwjyZK2NBpdFLyI7BiayZ24YcdUdlcxLwZ4=",
         "signed": ""
       },
       {
         "unsigned": "z6aW9RzErJBL5KqFG5h8lhTVt9oLbxppjod0Ebysydw=",
         "signed": ""
       }
     ]
   }
   ```

1. 설정 과정에서 이전에 생성한 프라이빗 키로 이 토큰에 사인하십시오. 먼저 base64로 인코딩된 토큰을 추출하고 디코딩해야 합니다.

   ```
   $ echo "Vtf/9QOFY45v/E1osvpEMr59JsnP/hLDm4ItOO2vqL8=" > token1.b64
   $ echo "wVbC0/5IKwjyZK2NBpdFLyI7BiayZ24YcdUdlcxLwZ4=" > token2.b64
   $ echo "z6aW9RzErJBL5KqFG5h8lhTVt9oLbxppjod0Ebysydw=" > token3.b64
   $ base64 -d token1.b64 > token1.bin
   $ base64 -d token2.b64 > token2.bin
   $ base64 -d token3.b64 > token3.bin
   ```

1. 이제 바이너리 토큰이 생겼습니다. 설정 중에 이전에 생성한 RSA 프라이빗 키를 사용하여 사인하십시오.

   ```
   $ openssl pkeyutl -sign \
         -inkey officer1.key \
         -pkeyopt digest:sha256 \
         -keyform PEM \
         -in token1.bin \
         -out token1.sig.bin
   $ openssl pkeyutl -sign \
         -inkey officer1.key \
         -pkeyopt digest:sha256 \
         -keyform PEM \
         -in token2.bin \
         -out token2.sig.bin
   $ openssl pkeyutl -sign \
         -inkey officer1.key \
         -pkeyopt digest:sha256 \
         -keyform PEM \
         -in token3.bin \
         -out token3.sig.bin
   ```

1. 이제 토큰의 바이너리 사인이 생겼습니다. base64를 사용하여 인코딩한 다음 토큰 파일에 다시 배치합니다.

   ```
   $ base64 -w0 token1.sig.bin > token1.sig.b64
   $ base64 -w0 token2.sig.bin > token2.sig.b64 
   $ base64 -w0 token3.sig.bin > token3.sig.b64
   ```

1. 마지막으로 base64 값을 복사하여 토큰 파일에 다시 붙여넣습니다.

   ```
   {
     "version": "2.0",
     "tokens": [
       {
         "unsigned": "1jqwxb9bJOUUQLiNb7mxXS1uBJsEXh0B9nj05BqnPsE=",
         "signed": "eiw3fZeCKIY50C4zPeg9Rt90M1Qlq3WlJh6Yw7xXm4nF6e9ETLE39+9M+rUqDWMRZjaBfaMbg5d9yDkz5p13U7ch2tlF9LoYabsWutkT014KRq/rcYMvFsU9n/Ey/TK0PVaxLN42X+pebV4juwMhN4mK4CzdFAJgM+UGBOj4yB9recpOBB9K8QFSpJZALSEdDgUc/mS1eDq3rU0int6+4NKuLQjpR+LSEIWRZ6g6+MND2vXGskxHjadCQ09L7Tz8VcWjKDbxJcBiGKvkqyozl9zrGo8fA3WHBmwiAgS61Merx77ZGY4PFR37+j/YMSC14prCN15DtMRv2xA1SGSb4w=="
       },
       {
         "unsigned": "LMMFc34ASPnvNPFzBbMbr9FProS/Zu2P8zF/xzk5hVQ=",
         "signed": "HBImKnHmw+6R2TpFEpfiAg4+hu2pFNwn43ClhKPkn2higbEhUD0JVi+4MerSyvU/NN79iWVxDvJ9Ito+jpiRQjTfTGEoIteyuAr1v/Bzh+HjmrO53OQpZaJ/VXGIgApD0myuu/ZGNKQTCSkkL7+V81FG7yR1Nm22jUeGa735zvm/E+cenvZdy0VVx6A7WeWrl3JEKKBweHbi+7BwbaW+PTdCuIRd4Ug76Sy+cFhsvcG1k7cMwDh8MgXzIZ2m1f/hdy2j8qAxORTLlmwyUOYvPYOvUhc+s83hx36QpGwGcD7RA0bPT5OrTx7PHd0N1CL+Wwy91We8yIOFBS6nxo1R7w=="
       },
       {
         "unsigned": "dzeHbwhiVXQqcUGj563z51/7sLUdxjL93SbOUyZRjH8=",
         "signed": "VgQPvrTsvGljVBFxHnswduq16x8ZrnxfcYVYGf/N7gEzI4At3GDs2EVZWTRdvS0uGHdkFYp1apHgJZ7PDVmGcTkIXVD2lFYppcgNlSzkYlftr5EOjqS9ZjYEqgGuB4g//MxaBaRbJai/6BlcE92NIdBusTtreIm3yTpjIXNAVoeRSnkfuw7wZcL96QoklNb1WUuSHw+psUyeIVtIwFMHEfFoRC0t+VhmnlnFnkjGPb9W3Aprw2dRRvFM3R2ZTDvMCiOYDzUCd43GftGq2LfxH3qSD51oFHglHQVOY0jyVzzlAvub5HQdtOQdErIeO0/9dGx5yot07o3xaGl5yQRhwA=="
       }
     ]
   }
   ```

1. 이제 토큰 파일에 필요한 모든 사인이 포함되었으므로 계속 진행할 수 있습니다. 사인된 토큰이 들어 있는 파일 이름을 입력하고 Enter 키를 누릅니다. 마지막으로 새 퍼블릭 키의 경로를 입력합니다. 이제 [user list]() 출력의 일부로 다음이 표시됩니다.

   ```
   Enter signed token file path (press enter if same as the unsigned token file):
   Enter public key PEM file path:officer1.pub
   {
     "error_code": 0,
     "data": {
       "username": "<username>",
       "role": "crypto-user"
     }
   }
   ```

   이제 사용자를 MFA로 설정했습니다.

   ```
   {
       "username": "<username>",
       "role": "crypto-user",
       "locked": "false",
       "mfa": [
         {
           "strategy": "token-sign",
           "status": "enabled"
         }
       ],
       "cluster-coverage": "full"
   },
   ```

생성된 JSON 형식 토큰 파일에 프라이빗 키로 사인하고 새 MFA 퍼블릭 키를 등록했습니다.

# CloudHSM CLI를 사용하여 MFA 퍼블릭 키 등록 취소
<a name="deregister-mfa-cloudhsm-cli"></a>

MFA 퍼블릭 키가 등록된 경우 AWS CloudHSM 관리자의 다중 인증(MFA) 퍼블릭 키 등록을 취소하려면 다음 단계를 따릅니다.

1. CloudHSM CLI를 사용하여 MFA가 활성화된 상태에서 관리자로 HSM에 로그인할 수 있습니다.

1. **user change-mfa token-sign** 명령을 사용하여 사용자용 MFA를 제거합니다.

   ```
   aws-cloudhsm > user change-mfa token-sign --username <username> --role admin --deregister --change-quorum
   Enter password:
   Confirm password:
   {
     "error_code": 0,
     "data": {
       "username": "<username>",
       "role": "admin"
     }
   }
   ```

# CloudHSM CLI를 사용하는 MFA에 대한 토큰 파일 참조
<a name="reference-mfa-cloudhsm-cli"></a>

다중 인증(MFA) 퍼블릭 키를 등록하거나 MFA를 사용하여 CloudHSM CLI에 로그인을 시도할 때 생성되는 토큰 파일은 다음과 같이 구성됩니다.
+ **토큰: JSON** 객체 리터럴 형태의 base64로 인코딩된 사인되지 않은/사인된 토큰 페어 배열.
+ **미사인:** base64로 인코딩되고 SHA256 해시 처리된 토큰입니다.
+ **사인:** RSA2048비트 프라이빗 키를 사용하여 사인되지 않은 토큰의 base64로 인코딩된 사인된 토큰(사인).

```
{
  "version": "2.0",
  "tokens": [
    {
      "unsigned": "1jqwxb9bJOUUQLiNb7mxXS1uBJsEXh0B9nj05BqnPsE=",
      "signed": "eiw3fZeCKIY50C4zPeg9Rt90M1Qlq3WlJh6Yw7xXm4nF6e9ETLE39+9M+rUqDWMRZjaBfaMbg5d9yDkz5p13U7ch2tlF9LoYabsWutkT014KRq/rcYMvFsU9n/Ey/TK0PVaxLN42X+pebV4juwMhN4mK4CzdFAJgM+UGBOj4yB9recpOBB9K8QFSpJZALSEdDgUc/mS1eDq3rU0int6+4NKuLQjpR+LSEIWRZ6g6+MND2vXGskxHjadCQ09L7Tz8VcWjKDbxJcBiGKvkqyozl9zrGo8fA3WHBmwiAgS61Merx77ZGY4PFR37+j/YMSC14prCN15DtMRv2xA1SGSb4w=="
    },
    {
      "unsigned": "LMMFc34ASPnvNPFzBbMbr9FProS/Zu2P8zF/xzk5hVQ=",
      "signed": "HBImKnHmw+6R2TpFEpfiAg4+hu2pFNwn43ClhKPkn2higbEhUD0JVi+4MerSyvU/NN79iWVxDvJ9Ito+jpiRQjTfTGEoIteyuAr1v/Bzh+HjmrO53OQpZaJ/VXGIgApD0myuu/ZGNKQTCSkkL7+V81FG7yR1Nm22jUeGa735zvm/E+cenvZdy0VVx6A7WeWrl3JEKKBweHbi+7BwbaW+PTdCuIRd4Ug76Sy+cFhsvcG1k7cMwDh8MgXzIZ2m1f/hdy2j8qAxORTLlmwyUOYvPYOvUhc+s83hx36QpGwGcD7RA0bPT5OrTx7PHd0N1CL+Wwy91We8yIOFBS6nxo1R7w=="
    },
    {
      "unsigned": "dzeHbwhiVXQqcUGj563z51/7sLUdxjL93SbOUyZRjH8=",
      "signed": "VgQPvrTsvGljVBFxHnswduq16x8ZrnxfcYVYGf/N7gEzI4At3GDs2EVZWTRdvS0uGHdkFYp1apHgJZ7PDVmGcTkIXVD2lFYppcgNlSzkYlftr5EOjqS9ZjYEqgGuB4g//MxaBaRbJai/6BlcE92NIdBusTtreIm3yTpjIXNAVoeRSnkfuw7wZcL96QoklNb1WUuSHw+psUyeIVtIwFMHEfFoRC0t+VhmnlnFnkjGPb9W3Aprw2dRRvFM3R2ZTDvMCiOYDzUCd43GftGq2LfxH3qSD51oFHglHQVOY0jyVzzlAvub5HQdtOQdErIeO0/9dGx5yot07o3xaGl5yQRhwA=="
    }
  ]
}
```

# CloudHSM CLI를 사용하여 쿼럼 인증 관리(N 중 M 액세스 제어)
<a name="quorum-auth-chsm-cli"></a>

AWS CloudHSM 클러스터는 M of N 액세스 제어라고도 하는 쿼럼 인증을 지원합니다. 이 기능을 사용하려면 HSM 사용자가 특정 작업에 협력하여 보호 계층을 추가해야 합니다.

쿼럼 인증의 경우 HSM의 단일 사용자는 HSM에서 쿼럼 제어 작업을 수행할 수 없습니다. 이러한 작업을 하려면 최소 숫자의 HSM 사용자(최소 2명)가 협력해야 합니다.

쿼럼 인증은 다음 작업을 제어할 수 있습니다.
+ [관리자](understanding-users.md#admin)의 HSM 사용자 관리: HSM 사용자 생성 및 삭제 또는 다른 HSM 사용자의 암호 변경. 자세한 내용은 [CloudHSM CLI를 AWS CloudHSM 사용하여 쿼럼 인증을 활성화한 사용자 관리](quorum-auth-chsm-cli-admin.md) 단원을 참조하십시오.

 AWS CloudHSM의 쿼럼 인증에 대한 핵심 사항입니다.
+ HSM 사용자는 자신의 쿼럼 토큰에 서명할 수 있습니다. 즉, 쿼럼 인증에 필요한 승인 중 하나를 제공할 수 있습니다.
+ 최소 쿼럼 승인자 수를 2\$18 사이에서 선택할 수 있습니다.
+ HSM은 최대 1024개의 쿼럼 토큰을 저장할 수 있습니다. 이 한도에 도달하면 HSM에서 만료된 토큰을 제거하고 새 토큰을 생성합니다.
+ 토큰은 기본적으로 생성 10분 후에 만료됩니다.
+ MFA가 활성화된 경우 클러스터는 쿼럼 인증과 다중 인증(MFA)에 동일한 키를 사용합니다. 자세한 내용은 [Using CloudHSM CLI to manage MFA](login-mfa-token-sign.md) 섹션을 참조하세요.
+ 각 HSM에는 관리자 서비스당 하나의 토큰과 Crypto User 서비스당 여러 개의 토큰이 포함될 수 있습니다.

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

**Topics**
+ [CloudHSM CLI용 쿼럼 인증 프로세스](quorum-auth-chsm-cli-overview.md)
+ [CloudHSM CLI를 사용한 쿼럼 인증에 지원되는 AWS CloudHSM 서비스 이름 및 유형](quorum-auth-chsm-cli-service-names.md)
+ [CloudHSM CLI를 사용하여 AWS CloudHSM 관리자에 대한 쿼럼 인증 설정](quorum-auth-chsm-cli-first-time.md)
+ [CloudHSM CLI를 AWS CloudHSM 사용하여 쿼럼 인증을 활성화한 사용자 관리](quorum-auth-chsm-cli-admin.md)
+ [CloudHSM CLI AWS CloudHSM 사용에 대한 쿼럼 최소값 변경](quorum-auth-chsm-cli-min-value.md)

# CloudHSM CLI용 쿼럼 인증 프로세스
<a name="quorum-auth-chsm-cli-overview"></a>

다음 단계는 CloudHSM CLI에 대한 쿼럼 인증 프로세스를 요약합니다. 구체적인 단계와 도구는 [CloudHSM CLI를 AWS CloudHSM 사용하여 쿼럼 인증을 활성화한 사용자 관리](quorum-auth-chsm-cli-admin.md)을 참조하십시오.

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

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

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

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

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

1. HSM 사용자가 필요한 수의 승인을 받으면 동일한 사용자가 HSM에 로그인하고 **--approval** 인수로 쿼럼 제어 작업을 실행하여 필요한 모든 승인(서명)이 포함된 서명된 쿼럼 토큰 파일을 제공합니다.

1. HSM은 각 서명자의 등록된 퍼블릭 키를 사용하여 서명을 확인합니다. 서명이 유효하면 HSM이 토큰을 승인하고 쿼럼 제어 작업이 수행됩니다.

# CloudHSM CLI를 사용한 쿼럼 인증에 지원되는 AWS CloudHSM 서비스 이름 및 유형
<a name="quorum-auth-chsm-cli-service-names"></a>

**관리 서비스**: 쿼럼 인증은 사용자 생성, 사용자 삭제, 사용자 비밀번호 변경, 쿼럼 값 설정, 쿼럼 및 MFA 기능 비활성화와 같은 관리자 권한 서비스에 사용됩니다.

**Crypto User 서비스**: Quorum 인증은 키로 서명, 키 공유/공유 해제, 키 래핑/래핑 해제, 키 속성 설정과 같은 특정 키와 연결된 Crypto User 권한 서비스에 사용됩니다. 연결된 키의 쿼럼 값은 키가 생성, 가져오기 또는 래핑 해제될 때 구성됩니다. 쿼럼 값은 키가 연결된 사용자 수와 같거나 적어야 합니다. 여기에는 키가 공유되는 사용자와 키 소유자가 포함됩니다.

각 서비스 유형은 수행할 수 있는 특정 쿼럼 지원 서비스 작업 세트를 포함하는 적격 서비스 이름으로 더 세분화됩니다.


****  

| 서비스 이름 | 서비스 유형 | 서비스 작업 | 
| --- | --- | --- | 
| user | 관리자 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/quorum-auth-chsm-cli-service-names.html)  | 
| 쿼럼 | 관리자 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/quorum-auth-chsm-cli-service-names.html)  | 
| cluster1 | 관리자 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/quorum-auth-chsm-cli-service-names.html)  | 
| 키 관리 | Crypto User |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/quorum-auth-chsm-cli-service-names.html)  | 
| 키 사용 | Crypto User |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/quorum-auth-chsm-cli-service-names.html)  | 

[1] 클러스터 서비스는 hsm2m.medium에서만 사용할 수 있습니다

# CloudHSM CLI를 사용하여 AWS CloudHSM 관리자에 대한 쿼럼 인증 설정
<a name="quorum-auth-chsm-cli-first-time"></a>

다음 주제에서는 AWS CloudHSM [관리자가 쿼럼 인증을 사용할](understanding-users.md#admin) 수 있도록 하드웨어 보안 모듈(HSM)을 구성하기 위해 완료해야 하는 단계를 설명합니다. 관리자에 대한 쿼럼 인증을 처음 구성할 때 이러한 단계를 한 번만 수행하면 됩니다. 이 단계들을 완료한 후 [CloudHSM CLI를 AWS CloudHSM 사용하여 쿼럼 인증을 활성화한 사용자 관리](quorum-auth-chsm-cli-admin.md) 섹션을 참조하십시오.

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

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

이 예를 이해하려면 [CloudHSM CLI](cloudhsm_cli.md)에 익숙해야 합니다.

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

쿼럼 인증을 사용하려면 각 관리자가 다음 단계를 *모두* 완료해야 합니다.

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

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

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

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

```
$ openssl genrsa -out <admin.key>
Generating RSA private key, 2048 bit long modulus
.....................................+++
.+++
e is 65537 (0x10001)
```

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

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

```
$ openssl rsa -in admin.key -outform PEM -pubout -out admin1.pub
writing RSA key
```

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

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

**Example — 등록 토큰 생성**  

1. 다음 명령을 사용하여 CloudHSM CLI를 시작합니다.

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

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. [쿼럼 토큰 서명 생성](cloudhsm_cli-qm-token-gen.md) 명령을 실행하여 등록 토큰을 생성합니다.

   ```
   aws-cloudhsm > quorum token-sign generate --service registration --token /path/tokenfile
   {
     "error_code": 0,
     "data": {
       "path": "/path/tokenfile"
     }
   }
   ```

1. [쿼럼 토큰 서명 생성](cloudhsm_cli-qm-token-gen.md) 명령은 지정된 파일 경로에 등록 토큰을 생성합니다. 토큰 파일 검사:

   ```
   $ cat /path/tokenfile
   {
     "version": "2.0",
     "tokens": [
       {
         "approval_data": <approval data in base64 encoding>,
         "unsigned": <unsigned token in base64 encoding>,
         "signed": ""
       }
     ]
   }
   ```

   토큰 파일은 다음으로 구성됩니다.
   + **approval\$1data**: 원시 데이터가 최대 245바이트를 초과하지 않는 base64로 인코딩된 무작위 데이터 토큰입니다.
   + **서명되지 않음**: approval\$1data의 base64로 인코딩되고 SHA256 해시 처리된 토큰입니다.
   + **서명됨**: 이전에 OpenSSL로 생성된 RSA 2048비트 개인 키를 사용하여 서명되지 않은 토큰의 base64로 인코딩된 서명된 토큰(서명)입니다.

   개인 키로 서명되지 않은 토큰에 서명하여 개인 키에 액세스할 수 있음을 증명합니다. 관리자를 AWS CloudHSM 클러스터에 쿼럼 사용자로 등록하려면 서명과 퍼블릭 키로 완전히 채워진 등록 토큰 파일이 필요합니다.

**Example — 서명되지 않은 등록 토큰에 서명**  

1. base64로 인코딩된 서명되지 않은 토큰을 디코딩하여 바이너리 파일에 배치합니다:

   ```
   $ echo -n '6BMUj6mUjjko6ZLCEdzGlWpR5sILhFJfqhW1ej3Oq1g=' | base64 -d > admin.bin
   ```

1. OpenSSL과 개인 키를 사용하여 현재 서명되지 않은 바이너리 등록 토큰에 서명하고 바이너리 서명 파일을 생성합니다.

   ```
   $ openssl pkeyutl -sign \
   -inkey admin.key \
   -pkeyopt digest:sha256 \
   -keyform PEM \
   -in admin.bin \
   -out admin.sig.bin
   ```

1. 바이너리 서명을 base64로 인코딩합니다.

   ```
   $ base64 -w0 admin.sig.bin > admin.sig.b64
   ```

1. base64로 인코딩된 서명을 복사하여 토큰 파일에 붙여넣습니다.

   ```
   {
     "version": "2.0",
     "tokens": [
       {
         "approval_data": <approval data in base64 encoding>,
         "unsigned": <unsigned token in base64 encoding>,
         "signed": <signed token in base64 encoding>
       }
     ]
   }
   ```

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

키를 생성한 후 관리자는 퍼블릭 키를 AWS CloudHSM 클러스터에 등록해야 합니다.

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

1. 다음 명령을 사용하여 CloudHSM CLI를 시작합니다.

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

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. CloudHSM CLI를 사용하여 관리자로 로그인합니다.

   ```
   aws-cloudhsm > login --username <admin> --role admin
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<admin>",
       "role": "admin"
     }
   }
   ```

1. **[CloudHSM CLI를 사용하여 사용자의 token-sign 쿼럼 전략 등록](cloudhsm_cli-user-chqm-token-reg.md)** 명령을 사용하여 퍼블릭 키를 등록합니다. 자세한 내용은 다음 예제를 참조하거나 **help user change-quorum token-sign register** 명령을 사용하십시오.

**Example - AWS CloudHSM 클러스터에 퍼블릭 키 등록**  
다음 예에서는 CloudHSM CLI의 **user change-quorum token-sign register** 명령을 사용하여 관리자의 퍼블릭 키를 HSM에 등록하는 방법을 보여줍니다. 이 명령을 사용하려면 관리자가 HSM에 로그인되어 있어야 합니다. 이 값들을 사용자의 값으로 대체합니다.  

```
aws-cloudhsm > user change-quorum token-sign register --public-key </path/admin.pub> --signed-token </path/tokenfile>
{
  "error_code": 0,
  "data": {
    "username": "admin",
    "role": "admin"
  }
}
```
**/path/admin.pub**: 퍼블릭 키 PEM 파일의 파일 경로  
**필수 항목 여부:** 예  
**/path/tokenfile**: 사용자 개인 키로 서명된 토큰이 있는 파일 경로  
**필수 항목 여부:** 예
모든 관리자가 퍼블릭 키를 등록하면 **user list** 명령 출력의 쿼럼 필드에 다음과 같이 활성화된 쿼럼 전략이 사용 중인 것으로 표시되어 다음과 같이 표시됩니다:  

```
aws-cloudhsm > user list
{
  "error_code": 0,
  "data": {
    "users": [
      {
        "username": "admin",
        "role": "admin",
        "locked": "false",
        "mfa": [],
        "quorum": [
          {
            "strategy": "token-sign",
            "status": "enabled"
          }
        ],
        "cluster-coverage": "full"
      },
      {
        "username": "admin2",
        "role": "admin",
        "locked": "false",
        "mfa": [],
        "quorum": [
          {
            "strategy": "token-sign",
            "status": "enabled"
          }
        ],
        "cluster-coverage": "full"
      },
      {
        "username": "admin3",
        "role": "admin",
        "locked": "false",
        "mfa": [],
        "quorum": [
          {
            "strategy": "token-sign",
            "status": "enabled"
          }
        ],
        "cluster-coverage": "full"
      },
      {
        "username": "admin4",
        "role": "admin",
        "locked": "false",
        "mfa": [],
        "quorum": [
          {
            "strategy": "token-sign",
            "status": "enabled"
          }
        ],
        "cluster-coverage": "full"
      },
      {
        "username": "app_user",
        "role": "internal(APPLIANCE_USER)",
        "locked": "false",
        "mfa": [],
        "quorum": [],
        "cluster-coverage": "full"
      }
    ]
  }
}
```
 이 예제에서 AWS CloudHSM 클러스터에는 **user list** 명령의 다음 출력과 같이 각각 관리자가 동일한 두 개의 HSMs이 있습니다. 사용자 생성에 대한 자세한 내용은 [CloudHSM CLI를 사용하는 사용자 관리](manage-hsm-users-chsm-cli.md) 섹션을 참조하세요.

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

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

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

1. 다음 명령을 사용하여 CloudHSM CLI를 시작합니다.

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

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. CloudHSM CLI를 사용하여 관리자로 로그인합니다.

   ```
   aws-cloudhsm > login --username <admin> --role admin
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<admin>",
       "role": "admin"
     }
   }
   ```

1. **[CloudHSM CLI를 사용하여 쿼럼 값 업데이트](cloudhsm_cli-qm-token-set-qm.md)** 명령을 사용하여 쿼럼 최소값을 설정합니다. `--service` 플래그는 값을 설정하려는 HSM 서비스를 식별합니다. 자세한 내용은 다음 예제를 참조하거나 **help quorum token-sign set-quorum-value** 명령을 사용하세요.

**Example - HSM에서 쿼럼 최소값 설정**  
이 예제에서는 쿼럼 최소값 이(2)를 사용합니다. HSM의 총 관리자 수까지 이(2)\$1팔(8) 사이의 값을 선택할 수 있습니다. 이 예제에서 HSM에는 네(4) 명의 관리자가 있으므로 가능한 최대값은 넷(4)입니다.  
다음 예제 명령을 사용하려면 마지막 숫자(*<2>*)를 기본 쿼럼 최소값으로 바꿉니다.  

```
aws-cloudhsm > quorum token-sign set-quorum-value --service user --value <2>
{
  "error_code": 0,
  "data": "Set quorum value successful"
}
```
이 예제에서 **[CloudHSM CLI를 사용하여 쿼럼 값 표시](cloudhsm_cli-qm-token-list-qm.md)** 명령은 서비스에 포함된 HSM 서비스 유형, 이름, 설명을 나열합니다.

## 쿼럼 최솟값
<a name="cloudhsm_cli-qm-list-minimum"></a>

**quorum token-sign list-quorum-values** 명령을 사용하여 서비스 쿼럼 최소값을 가져옵니다.

```
aws-cloudhsm > quorum token-sign list-quorum-values
{
  "error_code": 0,
  "data": {
    "user": 2,
    "quorum": 1
  }
}
```

이전 **quorum token-sign list-quorum-values** 명령의 출력은 사용자 관리 작업을 담당하는 HSM 사용자 서비스의 쿼럼 최소값이 이제 이(2) 임을 보여줍니다. 이 단계들을 완료한 후 [쿼럼을 사용한 사용자 관리(N 중 M)](quorum-auth-chsm-cli-admin.md) 섹션을 참조하십시오.

**관리 서비스**: 쿼럼 인증은 사용자 생성, 사용자 삭제, 사용자 비밀번호 변경, 쿼럼 값 설정, 쿼럼 및 MFA 기능 비활성화와 같은 관리자 권한 서비스에 사용됩니다.

**Crypto User 서비스**: Quorum 인증은 키로 서명, 키 공유/공유 해제, 키 래핑/래핑 해제, 키 속성 설정과 같은 특정 키와 연결된 Crypto User 권한 서비스에 사용됩니다. 연결된 키의 쿼럼 값은 키가 생성, 가져오기 또는 래핑 해제될 때 구성됩니다. 쿼럼 값은 키가 연결된 사용자 수와 같거나 적어야 합니다. 여기에는 키가 공유되는 사용자와 키 소유자가 포함됩니다.

각 서비스 유형은 수행할 수 있는 특정 쿼럼 지원 서비스 작업 세트를 포함하는 적격 서비스 이름으로 더 세분화됩니다.


****  

| 서비스 이름 | 서비스 유형 | 서비스 작업 | 
| --- | --- | --- | 
| user | 관리자 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/quorum-auth-chsm-cli-first-time.html)  | 
| 쿼럼 | 관리자 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/quorum-auth-chsm-cli-first-time.html)  | 
| cluster1 | 관리자 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/quorum-auth-chsm-cli-first-time.html)  | 
| 키 관리 | Crypto User |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/quorum-auth-chsm-cli-first-time.html)  | 
| 키 사용 | Crypto User |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/quorum-auth-chsm-cli-first-time.html)  | 

[1] 클러스터 서비스는 hsm2m.medium에서만 사용할 수 있습니다

# CloudHSM CLI를 AWS CloudHSM 사용하여 쿼럼 인증을 활성화한 사용자 관리
<a name="quorum-auth-chsm-cli-admin"></a>

하드웨어 보안 모듈(HSM)의 An AWS CloudHSM [admin](understanding-users.md#admin)은 AWS CloudHSM 클러스터에서 다음 작업에 대한 쿼럼 인증을 구성할 수 있습니다.
+ **[CloudHSM CLI를 사용하여 AWS CloudHSM 사용자 생성](cloudhsm_cli-user-create.md)**
+ **[CloudHSM CLI를 사용하여 AWS CloudHSM 사용자 삭제](cloudhsm_cli-user-delete.md)**
+ **[CloudHSM CLI를 사용하여 사용자 암호 변경](cloudhsm_cli-user-change-password.md)**
+ **[CloudHSM CLI에서 사용자 change-mfa 범주](cloudhsm_cli-user-change-mfa.md)**

 AWS CloudHSM 클러스터가 쿼럼 인증을 위해 구성된 후에는 관리자가 자체적으로 HSM 사용자 관리 작업을 수행할 수 없습니다. 다음 예에서는 관리자가 HSM에서 새 사용자를 생성하려고 할 때의 출력을 보여줍니다. 쿼럼 인증이 필요하다는 오류 메시지와 함께 명령이 실패합니다.

```
aws-cloudhsm > user create --username user1 --role crypto-user
Enter password:
Confirm password:
{
  "error_code": 1,
  "data": "Quorum approval is required for this operation"
}
```

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

**Topics**
+ [1단계. 쿼럼 토큰 가져오기](#quorum-admin-gen-token-chsm-cli)
+ [2단계. 승인하는 관리자로부터 서명 받기](#quorum-admin-get-approval-signatures-chsm-cli)
+ [3단계. AWS CloudHSM 클러스터에서 토큰을 승인하고 사용자 관리 작업을 실행합니다.](#quorum-admin-approve-token-chsm-cli)

## 1단계. 쿼럼 토큰 가져오기
<a name="quorum-admin-gen-token-chsm-cli"></a>

먼저 관리자는 CloudHSM CLI를 사용하여 *쿼럼 토큰*을 요청해야 합니다.

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

1. 다음 명령을 사용하여 CloudHSM CLI를 시작합니다.

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

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. CloudHSM CLI를 사용하여 관리자로 로그인합니다.

   ```
   aws-cloudhsm > login --username <admin> --role admin
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<admin>",
       "role": "admin"
     }
   }
   ```

1. **quorum token-sign generate** 명령을 사용하여 쿼럼 토큰을 생성합니다. 자세한 내용은 다음 예제를 참조하거나 **help quorum token-sign generate** 명령을 사용하십시오.

**Example — 쿼럼 토큰 생성**  
이 예에서는 사용자 이름이 `admin`인 관리자에 대한 쿼럼 토큰을 가져오고 해당 토큰을 `admin.token`라는 파일에 저장합니다. 예제 명령을 사용하려면 이들 값을 본인의 것으로 바꿉니다.  
+ *<admin>* – 토큰을 받는 관리자의 이름. 이는 HSM에 로그인하여 이 명령을 실행하는 관리자와 동일해야 합니다.
+ *<admin.token>* – 쿼럼 토큰을 저장하는 데 사용할 파일 이름입니다.
다음 명령에서 `user`는 생성 중인 토큰을 사용할 수 있는 *서비스 이름*을 식별합니다. 이 경우 토큰은 HSM 사용자 관리 작업 (`user` 서비스)을 위한 것입니다. .  

```
aws-cloudhsm > login --username <admin> --role admin --password <password>
{
  "error_code": 0,
  "data": {
    "username": "<admin>",
    "role": "admin"
  }
}
```

```
aws-cloudhsm > quorum token-sign generate --service user --token </path/admin.token>
{
  "error_code": 0,
  "data": {
    "path": "/home/tfile"
  }
}
```
**quorum token-sign generate** 명령은 지정된 파일 경로에 사용자 서비스 쿼럼 토큰을 생성합니다. 토큰 파일을 검사할 수 있습니다.  

```
$ cat </path/admin.token>
{
  "version": "2.0",
  "service": "user-management",
  "approval_data": "AAEAAwAAABgAAAAAAAAAAJ9eFkfcP3mNzJAlfK+OWbNhZG1pbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj5vbeAAAAAAAAAAAAAQADAAAAFQAAAAAAAAAAW/v5Euk83amq1fij0zyvD2FkbWluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPm9t4AAAAAAAAAAAABAAMAAAAUAAAAAAAAAABDw2XDwfK4hB8a15Xh1E0nYWRtaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY+b23gAAAAAAAAAA",
  "token": "0l2LZkmAHZyAc1hPhyckOoVW33aGrgG77qmDHWQ3CJ8=",
  "signatures": []
}
```
토큰 파일은 다음으로 구성됩니다.  
+ **서비스**: 토큰이 연결된 쿼럼 서비스의 식별자입니다.
+ **approval\$1data**: HSM에서 생성한 base64로 인코딩된 원시 데이터 토큰입니다.
+ **토큰**: Approval\$1data의 base64로 인코딩되고 SHA-256 해시된 토큰
+ **서명**: 승인자의 각 서명이 JSON 객체 리터럴 형식인 서명되지 않은 토큰의 base64로 인코딩된 서명된 토큰(서명) 배열입니다.

  ```
  {
        "username": "<APPROVER_USERNAME>",
        "role": "<APPROVER_ROLE>",
        "signature": "<APPROVER_RSA2048_BIT_SIGNATURE>"
  }
  ```

  각 서명은 HSM에 퍼블릭 키가 등록된 해당 RSA 2048비트 프라이빗 키를 사용하여 승인자의 결과로 생성됩니다.
생성된 사용자 서비스 쿼럼 토큰이 **quorum token-sign list** 명령을 실행하여 CloudHSM 클러스터에 존재하는지 확인할 수 있습니다.   

```
aws-cloudhsm > quorum token-sign list
{
  "error_code": 0,
  "data": {
    "tokens": [
      {
        "username": "admin",
        "service": "user",
        "approvals-required": {
          "value": 2
        },
        "number-of-approvals": {
          "value": 0
        },
        "token-timeout-seconds": {
          "value": 597
        },
        "cluster-coverage": "full"
      }
    ]
  }
}
```
`token-timeout-seconds` 시간은 생성된 토큰이 만료되기 전에 승인되는 데 걸리는 제한 시간 (초)을 나타냅니다.

## 2단계. 승인하는 관리자로부터 서명 받기
<a name="quorum-admin-get-approval-signatures-chsm-cli"></a>

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

토큰에 서명하는 방법은 다양합니다. 다음 예제에서는 [OpenSSL](https://www.openssl.org/)을 사용한 작업 방법을 보여 줍니다. 다른 서명 도구를 사용하려면 해당 도구가 관리자의 개인 키(서명 키)를 사용하여 토큰의 SHA-256 다이제스트에 서명하는지 확인하십시오.

**Example – 승인 관리자로부터 서명 받기**  
이 예에서 토큰(`admin`)이 있는 관리자는 최소 두(2) 개의 승인이 필요합니다. 다음 예제 명령은 두(2) 명의 관리자가 OpenSSL을 사용하여 암호화 방식으로 토큰에 서명할 수 있는 방법을 보여줍니다.  

1. base64로 인코딩된 서명되지 않은 토큰을 디코딩하여 바이너리 파일에 배치합니다:

   ```
   $ echo -n '0l2LZkmAHZyAc1hPhyckOoVW33aGrgG77qmDHWQ3CJ8=' | base64 -d > admin.bin
   ```

1. OpenSSL과 승인자 `(admin3)`의 개별 개인 키를 사용하여 사용자 서비스에 대한 현재 바이너리 쿼럼의 서명되지 않은 토큰에 서명하고 바이너리 서명 파일을 생성합니다.

   ```
   $ openssl pkeyutl -sign \
   -inkey admin3.key \
   -pkeyopt digest:sha256 \
   -keyform PEM \
   -in admin.bin \
   -out admin.sig.bin
   ```

1. 바이너리 서명을 base64로 인코딩합니다.

   ```
   $ base64 -w0 admin.sig.bin > admin.sig.b64
   ```

1. 마지막으로, 앞서 승인자 서명에 대해 지정한 JSON 개체 리터럴 형식에 따라 base64로 인코딩된 서명을 복사하여 토큰 파일에 붙여넣습니다.

   ```
   {
     "version": "2.0",
     "approval_data": "AAEAAwAAABgAAAAAAAAAAJ9eFkfcP3mNzJAlfK+OWbNhZG1pbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj5vbeAAAAAAAAAAAAAQADAAAAFQAAAAAAAAAAW/v5Euk83amq1fij0zyvD2FkbWluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPm9t4AAAAAAAAAAAABAAMAAAAUAAAAAAAAAABDw2XDwfK4hB8a15Xh1E0nYWRtaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY+b23gAAAAAAAAAA",
     "token": "0l2LZkmAHZyAc1hPhyckOoVW33aGrgG77qmDHWQ3CJ8=",
     "signatures": [
       {
         "username": "admin2",
         "role": "admin",
         "signature": "O6qx7/mUaVkYYVr1PW7l8JJko+Kh3e8zBIqdk3tAiNy+1rW+OsDtvYujhEU4aOFVLcrUFmyB/CX9OQmgJLgx/pyK+ZPEH+GoJGqk9YZ7X1nOXwZRP9g7hKV+7XCtg9TuDFtHYWDpBfz2jWiu2fXfX4/jTs4f2xIfFPIDKcSP8fhxjQ63xEcCf1jzGha6rDQMu4xUWWdtDgfT7um7EJ9dXNoHqLB7cTzphaubNaEFbFPXQ1siGmYKmvETlqe/ssktwyruGFLpXs1n0tJOEglGhx2qbYTs+omKWZdORl5WIWEXW3IXw/Dg5vVObrNpvG0eZKO8nSMc27+cyPySc+ZbNw=="
       },
       {
         "username": "admin3",
         "role": "admin",
         "signature": "O6qx7/mUaVkYYVr1PW7l8JJko+Kh3e8zBIqdk3tAiNy+1rW+OsDtvYujhEU4aOFVLcrUFmyB/CX9OQmgJLgx/pyK+ZPEH+GoJGqk9YZ7X1nOXwZRP9g7hKV+7XCtg9TuDFtHYWDpBfz2jWiu2fXfX4/jTs4f2xIfFPIDKcSP8fhxjQ63xEcCf1jzGha6rDQMu4xUWWdtDgfT7um7EJ9dXNoHqLB7cTzphaubNaEFbFPXQ1siGmYKmvETlqe/ssktwyruGFLpXs1n0tJOEglGhx2qbYTs+omKWZdORl5WIWEXW3IXw/Dg5vVObrNpvG0eZKO8nSMc27+cyPySc+ZbNw=="
       }
     ]
   }
   ```

## 3단계. AWS CloudHSM 클러스터에서 토큰을 승인하고 사용자 관리 작업을 실행합니다.
<a name="quorum-admin-approve-token-chsm-cli"></a>

이전 섹션에서 설명한 대로 관리자가 필요한 승인/서명을 받은 후 관리자는 다음 사용자 관리 작업 중 하나와 함께 해당 토큰을 AWS CloudHSM 클러스터에 제공할 수 있습니다.
+ **[생성](cloudhsm_cli-user-create.md)**
+ **[삭제](cloudhsm_cli-user-delete.md)**
+ **[암호-변경](cloudhsm_cli-user-change-password.md)**
+ **[user change-mfa](cloudhsm_cli-user-change-mfa.md)**

이러한 명령을 사용하는 방법은 [CloudHSM CLI를 사용하는 사용자 관리](manage-hsm-users-chsm-cli.md) 섹션을 참조하십시오.

트랜잭션 중에 토큰은 AWS CloudHSM 클러스터 내에서 승인되고 요청된 사용자 관리 작업을 실행합니다. 사용자 관리 작업의 성공 여부는 승인된 유효한 쿼럼 토큰과 유효한 사용자 관리 작업에 따라 결정됩니다.

관리자는 한 번의 작업에만 토큰을 사용할 수 있습니다. 해당 작업이 성공하면 토큰은 더 이상 유효하지 않습니다. 다른 HSM 사용자 관리 작업을 수행하려면 관리자가 위에 설명된 프로세스를 반복해야 합니다. 즉, 관리자는 새 쿼럼 토큰을 생성하고 승인자로부터 새 서명을 받은 다음 요청된 사용자 관리 작업을 통해 HSM에서 새 토큰을 승인하고 사용해야 합니다.

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

**Example 관리자로 새 사용자 생성**  
다음 예에서는 로그인한 관리자가 HSM에 새 사용자를 생성합니다.  

```
aws-cloudhsm > user create --username user1 --role crypto-user --approval /path/admin.token
Enter password:
Confirm password:
{
  "error_code": 0,
  "data": {
    "username": "user1",
    "role": "crypto-user"
  }
}
```
그후에 관리자는 **user list** 명령을 입력하여 새 사용자 생성을 확인합니다.  

```
aws-cloudhsm > user list
{
  "error_code": 0,
  "data": {
    "users": [
      {
        "username": "admin",
        "role": "admin",
        "locked": "false",
        "mfa": [],
        "quorum": [
          {
            "strategy": "token-sign",
            "status": "enabled"
          }
        ],
        "cluster-coverage": "full"
      },
      {
        "username": "admin2",
        "role": "admin",
        "locked": "false",
        "mfa": [],
        "quorum": [
          {
            "strategy": "token-sign",
            "status": "enabled"
          }
        ],
        "cluster-coverage": "full"
      },
      {
        "username": "admin3",
        "role": "admin",
        "locked": "false",
        "mfa": [],
        "quorum": [
          {
            "strategy": "token-sign",
            "status": "enabled"
          }
        ],
        "cluster-coverage": "full"
      },
      {
        "username": "admin4",
        "role": "admin",
        "locked": "false",
        "mfa": [],
        "quorum": [
          {
            "strategy": "token-sign",
            "status": "enabled"
          }
        ],
        "cluster-coverage": "full"
      },
      {
        "username": "user1",
        "role": "crypto-user",
        "locked": "false",
        "mfa": [],
        "quorum": [],
        "cluster-coverage": "full"
      },
      {
        "username": "app_user",
        "role": "internal(APPLIANCE_USER)",
        "locked": "false",
        "mfa": [],
        "quorum": [],
        "cluster-coverage": "full"
      }
    ]
  }
}
```
관리자가 다른 HSM 사용자 관리 작업을 수행하려고 하면 쿼럼 인증 오류로 인해 실패합니다.  

```
aws-cloudhsm > user delete --username user1 --role crypto-user
{
  "error_code": 1,
  "data": "Quorum approval is required for this operation"
}
```
아래와 같이 **quorum token-sign list** 명령을 실행하면 관리자에게 승인된 토큰이 없는 것으로 표시됩니다. 다른 HSM 사용자 관리 작업을 수행하려면 사용자 관리 작업을 실행하는 동안 승인되고 소비될 쿼럼 토큰을 제공하기 위해 관리자가 새 쿼럼 토큰을 생성하고 승인자로부터 새 서명을 받은 다음 --approval 인수와 함께 원하는 사용자 관리 작업을 실행해야 합니다.   

```
aws-cloudhsm > quorum token-sign list
{
  "error_code": 0,
  "data": {
    "tokens": []
  }
}
```

# CloudHSM CLI AWS CloudHSM 사용에 대한 쿼럼 최소값 변경
<a name="quorum-auth-chsm-cli-min-value"></a>

CloudHSM [관리자](understanding-users.md#admin)의 [쿼럼 최솟값을 설정](quorum-auth-chsm-cli-first-time.md#quorum-admin-set-quorum-minimum-value-chsm-cli)한 후 쿼럼 최솟값을 조정해야 할 수 있습니다. HSM에서는 승인자의 수가 현재 값에 도달하거나 그 이상인 경우에만 쿼럼 최솟값을 변경할 수 있습니다. 예를 들어 쿼럼 최솟값이 2인 경우 최소 두 명(2)의 관리자가 변경 사항을 승인해야 합니다.

**참고**  
사용자 서비스의 쿼럼 값은 항상 쿼럼 서비스의 쿼럼 값보다 작거나 같아야 합니다. 서비스 이름에 대한 자세한 내용은 [CloudHSM CLI를 사용한 쿼럼 인증에 지원되는 AWS CloudHSM 서비스 이름 및 유형](quorum-auth-chsm-cli-service-names.md) 섹션을 참조하세요.

쿼럼 최소값을 변경하기 위한 쿼럼 승인을 받으려면 **quorum token-sign set-quorum-value** 명령을 사용할 **quorum service**에 대한 *쿼럼 토큰*이 필요합니다. **quorum token-sign set-quorum-value** 명령을 사용할 **quorum service**에 대한 쿼럼 토큰을 생성하려면 쿼럼 서비스가 1보다 높아야 합니다. 즉, *사용자 서비스*의 쿼럼 최소값을 변경하려면 먼저 *쿼럼 서비스*의 쿼럼 최소값을 변경해야 할 수도 있습니다.

**관리자의 쿼럼 최솟값을 변경하기 위한 단계**

1. CloudHSM CLI 대화형 모드를 시작합니다.

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

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

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

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. CloudHSM CLI를 사용하여 관리자로 로그인합니다.

   ```
   aws-cloudhsm > login --username <admin> --role admin
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<admin>",
       "role": "admin"
     }
   }
   ```

1. 현재 쿼럼 최솟값을 확인합니다.

   ```
   aws-cloudhsm > quorum token-sign list-quorum-values
   ```

1. 쿼럼 서비스의 쿼럼 최솟값이 사용자 서비스의 값보다 작은 경우 *쿼럼 서비스*의 값을 변경합니다.

   ```
   aws-cloudhsm > quorum token-sign set-quorum-value --service quorum --value <3>
   ```

1. 쿼럼 서비스에 대한 [쿼럼 토큰을 생성](quorum-auth-chsm-cli-admin.md#quorum-admin-gen-token-chsm-cli)합니다.

1. [다른 관리자의 승인(서명)을 받습니다](quorum-auth-chsm-cli-admin.md#quorum-admin-get-approval-signatures-chsm-cli).

1. [CloudHSM 클러스터에 토큰을 승인하고 사용자 관리 작업을 실행합니다](quorum-auth-chsm-cli-admin.md#quorum-admin-approve-token-chsm-cli).

1. *사용자 서비스*의 쿼럼 최솟값을 변경합니다.

   ```
   aws-cloudhsm > quorum token-sign set-quorum-value
   ```

**Example *쿼럼 서비스* 최솟값 조정**  

1. **현재 값을 확인 합니다**. 다음 예제는 *사용자 서비스*의 쿼럼 최솟값이 현재 2임을 보여줍니다.

   ```
   aws-cloudhsm > quorum token-sign list-quorum-values
   {
     "error_code": 0,
     "data": {
       "user": 2,
       "quorum": 1
     }
   }
   ```

1. **쿼럼 서비스 값을 변경합니다**. *쿼럼 서비스*의 쿼럼 최솟값을 *사용자 서비스*와 같거나 높은 값으로 설정합니다. 이 예제에서는 *쿼럼 서비스*의 쿼럼 최솟값을 이전 예제의 *사용자 서비스*에 설정된 값과 동일한 2로 설정합니다.

   ```
   aws-cloudhsm > quorum token-sign set-quorum-value --service quorum --value 2
   {
     "error_code": 0,
     "data": "Set quorum value successful"
   }
   ```

1. **변경 사항을 확인합니다**. 이 예제는 이제 *사용자 서비스* 및 *쿼럼 서비스*에 대한 쿼럼 최솟값이 2임을 보여줍니다.

   ```
   aws-cloudhsm > quorum token-sign list-quorum-values
   {
     "error_code": 0,
     "data": {
       "user": 2,
       "quorum": 2
     }
   }
   ```

# 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]
```