CloudHSM CLI를 사용하여 AWS CloudHSM에서 쿼럼 인증이 활성화된 키 관리 및 사용
AWS CloudHSM 클러스터에 쿼럼 인증을 구성한 후에는 키에 연결된 쿼럼 값이 있는 경우 Crypto User가 HSM 키 관리 또는 사용 작업을 자체적으로 수행할 수 없습니다. 이 주제에서는 Crypto User가 HSM 키 관리 또는 키 사용 작업을 수행하기 위한 임시 토큰을 얻는 방법을 설명합니다.
참고
각 쿼럼 토큰은 하나의 작업에 유효합니다. 해당 작업이 성공하면 토큰이 더 이상 유효하지 않으며 Crypto User는 새 토큰을 얻어야 합니다. 쿼럼 토큰은 현재 로그인 세션 중에만 유효합니다. CloudHSM CLI에서 로그아웃하거나 네트워크 연결이 끊기면 토큰은 더 이상 유효하지 않으며 새 토큰을 얻어야 합니다. CloudHSM 토큰은 CloudHSM CLI에서만 사용할 수 있습니다. 다른 애플리케이션에서 인증하는 데 사용할 수 없습니다.
다음 예제는 쿼럼 인증이 구성된 후 Crypto User가 HSM에서 쿼럼 연결 키로 서명을 생성하려고 할 때의 출력을 보여줍니다. 명령이 실패하고 Quorum Failed 오류가 반환됩니다. 이는 쿼럼 인증이 실패했음을 의미합니다.
aws-cloudhsm >crypto sign rsa-pkcs --key-filter attr.label=rsa-private-key-example --hash-function sha256 --data YWJjMTIz{ "error_code": 1, "data": "Quorum Failed" }
Crypto User가 HSM에서 키 관리 또는 키 사용 작업을 수행하기 위해 필요한 임시 토큰을 얻으려면 다음 작업을 완료해야 합니다.
1단계. 쿼럼 토큰 가져오기
-
CloudHSM CLI를 시작합니다.
-
Crypto User로 클러스터에 로그인합니다.
aws-cloudhsm >login --username--password<crypto_user1>--role crypto-userpassword123이 예제에서는
crypto_user1이crypto-user역할을 사용하여 CloudHSM CLI에 로그인합니다. 이러한 값을 사용자의 값으로 대체합니다.{ "error_code": 0, "data": { "username": "crypto_user1", "role": "crypto-user" } } -
quorum token-sign generate 명령을 사용하여 쿼럼 토큰을 생성합니다.
다음 명령에서
key-usage는 생성 중인 토큰을 사용할 서비스 이름을 식별합니다. 이 경우 토큰은 키 사용 작업(key-usage서비스)을 위한 것입니다. 이 예제에서는--filter플래그를 사용하여 토큰을 특정 키와 연결합니다.aws-cloudhsm >quorum token-sign generate --service key-usage --token</path/crypto_user1.token>--filter attr.label=rsa-private-key-example{ "error_code": 0, "data": { "path": "/home/crypto_user1.token" } }이 예에서는 사용자 이름이
crypto_user1인 Crypto User에 대한 쿼럼 토큰을 가져오고 해당 토큰을crypto_user1.token라는 파일에 저장합니다. 예제 명령을 사용하려면 이들 값을 본인의 것으로 바꿉니다.quorum token-sign generate 명령은 지정된 파일 경로에 키 사용 서비스 쿼럼 토큰을 생성합니다. 토큰 파일을 검사할 수 있습니다.
$cat</path/crypto_user1.token>{ "version": "2.0", "service": "key-usage", "key_reference": "0x0000000000680006", "approval_data": "AAIABQAAABkAAAAAAGgABi5CDa9x9VyyRIaFbkSrHgJjcnlwdG9fdXNlcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnPQBLAAAAAAAAAAAAAgAFAAAAGgAAAAAAaAAGQvd2qKY+GJj8gXo9lKuANGNyeXB0b191c2VyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGc9AEsAAAAAAAAAAA==", "token": "5GlgoWOlQU4fw4QIlbxkPGZVOVoDugFGuSKE/k67ncM=", "signatures": [] }토큰 파일은 다음으로 구성됩니다.
-
서비스: 토큰이 연결된 쿼럼 서비스의 식별자입니다.
-
key_reference: 이 쿼럼 토큰이 연결된 키의 식별자입니다.
-
approval_data: HSM에서 생성한 base64로 인코딩된 원시 데이터 토큰입니다.
-
토큰: Approval_data의 base64로 인코딩되고 SHA-256 해시된 토큰
-
서명: 서명되지 않은 토큰의 base64 인코딩된 서명된 토큰(서명)의 배열입니다. 각 승인자 서명은 JSON 객체 리터럴 형식입니다.
{ "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": "crypto_user", "service": "key-usage", "key-reference": "0x0000000000680006", "minimum-token-count": 2 } ] } }minimum-token-count는 클러스터의 단일 HSM에서 검색되는 사용자 이름, 서비스, 키 참조에 해당하는 사용 가능한 최소 키 토큰 수에 대해 집계된 클러스터 보기를 제공합니다.예를 들어 2-HSM 클러스터를 가정할 경우, 클러스터의 첫 번째 HSM에서
0x0000000000680006참조로 키에 대해crypto_user1사용자가 생성한 키 사용 토큰 2개를 수신하고 클러스터의 다른 HSM에서0x0000000000680006참조로 키에 대해crypto_user1사용자가 생성한 키 사용 토큰 1개를 수신하면"minimum-token-count": 1가 표시됩니다.
2단계. Crypto Users 승인에서 서명 가져오기
쿼럼 토큰이 있는 Crypto User는 다른 Crypto User의 승인을 받아야 합니다. 승인을 위해 다른 Crypto User는 서명 키를 사용하여 암호화 방식으로 HSM 외부의 토큰에 서명합니다.
토큰에 서명하는 방법은 다양합니다. 다음은 OpenSSL
이 예제에서 토큰(crypto-user)이 있는 Crypto User는 최소 두(2) 개의 승인이 필요합니다. 다음 예제 명령은 두(2) 명의 Crypto User가 OpenSSL을 사용하여 암호화 방식으로 토큰에 서명할 수 있는 방법을 보여줍니다.
-
base64로 인코딩된 서명되지 않은 토큰을 디코딩하여 바이너리 파일에 배치합니다:
$echo -n '5GlgoWOlQU4fw4QIlbxkPGZVOVoDugFGuSKE/k67ncM=' | base64 -d > crypto_user1.bin -
OpenSSL과 승인자의 프라이빗 키를 사용하여 사용자 서비스에 대한 바이너리 쿼럼의 서명되지 않은 토큰에 서명하고 바이너리 서명 파일을 생성합니다.
$openssl pkeyutl -sign \ -inkey crypto_user1.key \ -pkeyopt digest:sha256 \ -keyform PEM \ -in crypto_user1.bin \ -out crypto_user1.sig.bin -
바이너리 서명을 base64로 인코딩합니다.
$base64 -w0 crypto_user1.sig.bin > crypto_user1.sig.b64 -
앞서 승인자 서명에 대해 지정한 JSON 객체 리터럴 형식을 사용하여 base64로 인코딩된 서명을 복사하고 토큰 파일에 붙여넣습니다.
{ "version": "2.0", "service": "key-usage", "key_reference": "0x0000000000680006", "approval_data": "AAIABQAAABkAAAAAAGgABi5CDa9x9VyyRIaFbkSrHgJjcnlwdG9fdXNlcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnPQBLAAAAAAAAAAAAAgAFAAAAGgAAAAAAaAAGQvd2qKY+GJj8gXo9lKuANGNyeXB0b191c2VyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGc9AEsAAAAAAAAAAA==", "token": "5GlgoWOlQU4fw4QIlbxkPGZVOVoDugFGuSKE/k67ncM=", "signatures": [ { "username": "crypto_user1", "role": "crypto-user", "signature": "wa7aPzmGwBjcEoZ6jAzYASp841AfgOvcI27Y/tGlCj1E9DawnFw5Uf0IJT2Ca7T5XD2ThVkUi0B+dhAomdqYNl6aUUFrJyH9GBJ+E0PmA5jNVm25tzeRWBJzneTg4/zTeE2reNqrHFHicWnttQLe9jS09J1znuDGWDe0HaBKWUaz2gUInJRqmeXDsZYdSvZksrqUH5dci/RsaDE2+tGiS9g0RcIkFbsPW4HpGe2e5HVzGsqrV8O3PKlYQv6+fymfcNTTuoxKcHAkOjpl43QSuSIu2gVq7KI8mSmmWaPJL47NPjmcBVB5vdEQU+oiukaNfLJr+MoDKzAvCGDg4cDArg==" }, { "username": "crypto_user2", "role": "crypto-user", "signature": "wa7aPzmGwBjcEoZ6jAzYASp841AfgOvcI27Y/tGlCj1E9DawnFw5Uf0IJT2Ca7T5XD2ThVkUi0B+dhAomdqYNl6aUUFrJyH9GBJ+E0PmA5jNVm25tzeRWBJzneTg4/zTeE2reNqrHFHicWnttQLe9jS09J1znuDGWDe0HaBKWUaz2gUInJRqmeXDsZYdSvZksrqUH5dci/RsaDE2+tGiS9g0RcIkFbsPW4HpGe2e5HVzGsqrV8O3PKlYQv6+fymfcNTTuoxKcHAkOjpl43QSuSIu2gVq7KI8mSmmWaPJL47NPjmcBVB5vdEQU+oiukaNfLJr+MoDKzAvCGDg4cDArg==" } ] }
3단계. CloudHSM 클러스터에서 토큰을 승인하고 작업 실행
Crypto User에게 필요한 승인 및 서명이 있으면 키 관리 또는 키 사용 작업과 함께 해당 토큰을 CloudHSM 클러스터에 제공할 수 있습니다.
키 작업이 쿼럼 토큰과 연결된 적절한 쿼럼 서비스에 해당하는지 확인합니다. 자세한 내용은 지원되는 서비스 및 유형 단원을 참조하세요.
트랜잭션 중에 토큰은 AWS CloudHSM 클러스터 내에서 승인되고 요청된 키 작업을 실행합니다. 키 작업의 성공 여부는 승인된 유효한 쿼럼 토큰과 유효한 키 작업에 따라 결정됩니다.
예 RSA-PKCS 메커니즘으로 서명 생성
다음 예제에서는 로그인한 Crypto User가 HSM에허 키를 사용하여 서명을 생성합니다.
aws-cloudhsm >crypto sign rsa-pkcs --key-filter attr.label=rsa-private-key-example --hash-function sha256 --data YWJjMTIz --approval /path/crypto_user1.token{ "error_code": 0, "data": { "key-reference": "0x0000000000640007", "signature": "h6hMqXacBrT3x3MXV13RXHdQno0+IQ6iy0kVrGzo23+eoWT0ZZgrSpBCu5KcuP6IYYHw9goQ5CfPf4jI1nO5m/IUJtF1A1lmcz0HjEy1CJ7ICXNReDRyeOU8m43dkJzt0OUdkbtkDJGAcxkbKHLZ02uWsGXaQ8bOKhoGwsRAHHF6nldTXquICfOHgSd4nimObKTqzUkghhJW5Ot5oUyLMYP+pZmUS38ythybney94Wj6fzYOER8v7VIY5ijQGa3LfxrjSG4aw6QijEEbno5LSf18ahEaVKmVEnDBL54tylCJBGvGsYSY9HNhuJoHPgiDL/TDd2wfvP4PaxbFRyyHaw==" } }
Crypto User가 동일한 토큰으로 다른 HSM 키 사용 작업을 수행하려고 하면 실패합니다.
aws-cloudhsm >crypto sign rsa-pkcs --key-filter attr.label=rsa-private-key-example --hash-function sha256 --data YWJjMTIz --approval /home/crypto_user1.token{ "error_code": 1, "data": "Quorum approval is required for this operation" }
다른 HSM 키 작업을 수행하려면 Crypto User가 새 쿼럼 토큰을 생성하고 승인자로부터 새 서명을 받은 다음 해당 쿼럼 토큰을 제공하기 위해 --approval 인수와 함께 원하는 키 작업을 실행해야 합니다.
quorum token-sign list를 사용하여 사용 가능한 토큰을 확인합니다. 이 예제는 Crypto User에 승인된 토큰이 없음을 보여줍니다.
aws-cloudhsm >quorum token-sign list{ "error_code": 0, "data": { "tokens": [] } }