CloudHSM CLI를 사용하는 AWS CloudHSM용 쿼럼 인증이 활성화된 사용자 관리
하드웨어 보안 모듈(HSM)의 AWS CloudHSM 관리자는 AWS CloudHSM 클러스터에 다음 작업에 대해 쿼럼 인증을 구성할 수 있습니다.
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 사용자 관리 작업을 수행하려면 관리자가 다음 작업을 완료해야 합니다.
단계 1. 쿼럼 토큰 가져오기
먼저 관리자는 CloudHSM CLI를 사용하여 쿼럼 토큰을 요청해야 합니다.
쿼럼 토큰을 가져오려면
-
다음 명령을 사용하여 CloudHSM CLI를 시작합니다.
-
login 명령을 사용하고 관리자로 클러스터에 로그인합니다.
aws-cloudhsm>
login --username
admin
--role admin -
quorum token-sign generate 명령을 사용하여 쿼럼 토큰을 생성합니다. 자세한 내용은 다음 예제를 참조하거나 help quorum token-sign generate 명령을 사용하십시오.
예 — 쿼럼 토큰 생성
이 예에서는 사용자 이름이 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", "approval_data": "AAEAAwAAABgAAAAAAAAAAJ9eFkfcP3mNzJAlfK+OWbNhZG1pbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj5vbeAAAAAAAAAAAAAQADAAAAFQAAAAAAAAAAW/v5Euk83amq1fij0zyvD2FkbWluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPm9t4AAAAAAAAAAAABAAMAAAAUAAAAAAAAAABDw2XDwfK4hB8a15Xh1E0nYWRtaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY+b23gAAAAAAAAAA", "token": "0l2LZkmAHZyAc1hPhyckOoVW33aGrgG77qmDHWQ3CJ8=", "signatures": [] }
토큰 파일은 다음으로 구성됩니다.
approval_data: HSM에서 생성한 base64로 인코딩된 원시 데이터 토큰입니다.
토큰: Approval_data의 base64로 인코딩되고 SHA-256 해시된 토큰
서명: 승인자의 각 서명이 JSON 객체 리터럴 형식인 서명되지 않은 토큰의 base64로 인코딩된 서명된 토큰(서명) 배열입니다.
{ "username": "
<APPROVER_USERNAME>
", "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. 승인하는 관리자로부터 서명 받기
쿼럼 토큰이 있는 관리자는 다른 관리자로부터 토큰 승인을 받아야 합니다. 승인을 위해 다른 관리자는 서명 키를 사용하여 암호화 방식으로 토큰에 서명합니다. 이 절차는 HSM 외부에서 이루어집니다.
토큰에 서명하는 방법은 다양합니다. 다음 예제에서는 OpenSSL
예 – 승인 관리자로부터 서명 받기
이 예에서 토큰(admin
)이 있는 관리자는 최소 두(2) 개의 승인이 필요합니다. 다음 예제 명령은 두(2) 명의 관리자가 OpenSSL을 사용하여 암호화 방식으로 토큰에 서명할 수 있는 방법을 보여줍니다.
-
base64로 인코딩된 서명되지 않은 토큰을 디코딩하여 바이너리 파일에 배치합니다:
$
echo -n '0l2LZkmAHZyAc1hPhyckOoVW33aGrgG77qmDHWQ3CJ8=' | base64 -d > admin.bin
-
OpenSSL과 승인자
(admin3)
의 개별 개인 키를 사용하여 사용자 서비스에 대한 현재 바이너리 쿼럼의 서명되지 않은 토큰에 서명하고 바이너리 서명 파일을 생성합니다.$
openssl pkeyutl -sign \ -inkey admin3.key \ -pkeyopt digest:sha256 \ -keyform PEM \ -in admin.bin \ -out admin.sig.bin
-
바이너리 서명을 base64로 인코딩합니다.
$
base64 -w0 admin.sig.bin > admin.sig.b64
-
마지막으로, 앞서 승인자 서명에 대해 지정한 JSON 개체 리터럴 형식에 따라 base64로 인코딩된 서명을 복사하여 토큰 파일에 붙여넣습니다.
{ "version": "2.0", "approval_data": "AAEAAwAAABgAAAAAAAAAAJ9eFkfcP3mNzJAlfK+OWbNhZG1pbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj5vbeAAAAAAAAAAAAAQADAAAAFQAAAAAAAAAAW/v5Euk83amq1fij0zyvD2FkbWluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPm9t4AAAAAAAAAAAABAAMAAAAUAAAAAAAAAABDw2XDwfK4hB8a15Xh1E0nYWRtaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY+b23gAAAAAAAAAA", "token": "0l2LZkmAHZyAc1hPhyckOoVW33aGrgG77qmDHWQ3CJ8=", "signatures": [ { "username": "admin2", "signature": "O6qx7/mUaVkYYVr1PW7l8JJko+Kh3e8zBIqdk3tAiNy+1rW+OsDtvYujhEU4aOFVLcrUFmyB/CX9OQmgJLgx/pyK+ZPEH+GoJGqk9YZ7X1nOXwZRP9g7hKV+7XCtg9TuDFtHYWDpBfz2jWiu2fXfX4/jTs4f2xIfFPIDKcSP8fhxjQ63xEcCf1jzGha6rDQMu4xUWWdtDgfT7um7EJ9dXNoHqLB7cTzphaubNaEFbFPXQ1siGmYKmvETlqe/ssktwyruGFLpXs1n0tJOEglGhx2qbYTs+omKWZdORl5WIWEXW3IXw/Dg5vVObrNpvG0eZKO8nSMc27+cyPySc+ZbNw==" }, { "username": "admin3", "signature": "O6qx7/mUaVkYYVr1PW7l8JJko+Kh3e8zBIqdk3tAiNy+1rW+OsDtvYujhEU4aOFVLcrUFmyB/CX9OQmgJLgx/pyK+ZPEH+GoJGqk9YZ7X1nOXwZRP9g7hKV+7XCtg9TuDFtHYWDpBfz2jWiu2fXfX4/jTs4f2xIfFPIDKcSP8fhxjQ63xEcCf1jzGha6rDQMu4xUWWdtDgfT7um7EJ9dXNoHqLB7cTzphaubNaEFbFPXQ1siGmYKmvETlqe/ssktwyruGFLpXs1n0tJOEglGhx2qbYTs+omKWZdORl5WIWEXW3IXw/Dg5vVObrNpvG0eZKO8nSMc27+cyPySc+ZbNw==" } ] }
단계 3. AWS CloudHSM 클러스터에서 토큰을 승인하고 사용자 관리 작업 실행
이전 섹션에서 설명한 대로 관리자가 필요한 승인/서명을 받은 후 관리자는 다음 사용자 관리 작업 중 하나와 함께 해당 토큰을 AWS CloudHSM 클러스터에 제공할 수 있습니다.
이러한 명령을 사용하는 방법은 CloudHSM CLI를 사용하는 사용자 관리 섹션을 참조하십시오.
트랜잭션 중에 토큰은 AWS CloudHSM 클러스터 내에서 승인되고 요청된 사용자 관리 작업을 실행합니다. 사용자 관리 작업의 성공 여부는 승인된 유효한 쿼럼 토큰과 유효한 사용자 관리 작업에 따라 결정됩니다.
관리자는 한 번의 작업에만 토큰을 사용할 수 있습니다. 해당 작업이 성공하면 토큰은 더 이상 유효하지 않습니다. 다른 HSM 사용자 관리 작업을 수행하려면 관리자가 위에 설명된 프로세스를 반복해야 합니다. 즉, 관리자는 새 쿼럼 토큰을 생성하고 승인자로부터 새 서명을 받은 다음 요청된 사용자 관리 작업을 통해 HSM에서 새 토큰을 승인하고 사용해야 합니다.
참고
쿼럼 토큰은 현재 로그인 세션이 열려 있는 동안에만 유효합니다. CloudHSM CLI에서 로그아웃하거나 네트워크 연결이 끊기면 토큰은 더 이상 유효하지 않습니다. 마찬가지로 승인된 토큰은 CloudHSM CLI 내에서만 사용할 수 있습니다. 다른 애플리케이션에서 인증하는 데는 사용할 수 없습니다.
예 관리자로 새 사용자 생성
다음 예에서는 로그인한 관리자가 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": [] } }