CloudHSM 관리 유틸리티(CMU)를 사용하여 CO(Crypto Officer)를 위한 2팩터 인증(2FA) 관리 - AWS CloudHSM

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

CloudHSM 관리 유틸리티(CMU)를 사용하여 CO(Crypto Officer)를 위한 2팩터 인증(2FA) 관리

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

참고

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

HSM 사용자를 위한 2FA 이해

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

쿼럼 인증 및 2FA

클러스터는 쿼럼 인증과 2FA에 동일한 키를 사용합니다. 즉, 2FA가 활성화된 사용자가 M-of-N 액세스 제어(MoFn)에 효과적으로 등록되었다는 것을 의미합니다. 동일한 HSM 사용자에 대해 2FA 및 쿼럼 인증을 성공적으로 사용하려면 다음 사항을 고려해야 합니다.

  • 현재 사용자에 대해 쿼럼 인증을 사용하는 경우 쿼럼 사용자에 대해 생성한 것과 동일한 키 페어를 사용하여 사용자에 대해 2FA를 활성화해야 합니다.

  • 쿼럼 인증 사용자가 아닌 비 2FA 사용자에 대한 2FA 요구 사항을 추가하면 2FA 인증을 통해 해당 사용자를 MofN 사용자로 등록합니다.

  • 2FA 요구 사항을 제거하거나 쿼럼 인증 사용자이기도 한 2FA 사용자의 암호를 변경하면 해당 쿼럼 사용자의 MoFN 사용자 등록도 제거됩니다.

  • 쿼럼 인증 사용자이기도 한 2FA 사용자의 2FA 요구 사항을 제거하거나 암호는 변경하지만 해당 사용자가 여전히 쿼럼 인증에 참여하도록 하려면 해당 사용자를 MoFN 사용자로 다시 등록해야 합니다.

쿼럼 인증에 대한 자세한 내용은 CMU를 사용하여 쿼럼 인증 관리 섹션을 참조하십시오.

HSM 사용자를 위한 2FA 사용

이 섹션에서는 2FA HSM 사용자 생성, 키 교체, 2FA 지원 사용자로 HSM에 로그인하기 등 HSM 사용자를 위한 2FA 사용 방법에 대해 설명합니다. HSM 사용자 작업에 대한 자세한 내용은 HSM 사용자 관리 AWS CloudHSM, CloudHSM 관리 유틸리티(CMU)를 사용하여 사용자 관리, createUser, loginHSM 및 logoutHSM, changePswd 섹션을 참조하십시오.

2FA 사용자 생성

HSM 사용자에 대한 2FA를 활성화하려면 다음 요구 사항을 충족하는 키를 사용하십시오.

새 키 페어를 만들거나 다음 요구 사항을 충족하는 기존 키를 사용할 수 있습니다.

  • 키 유형: 비대칭

  • 키 사용: 서명 및 확인

  • 키 사양: RSA_2048

  • 서명 알고리즘에는 다음이 포함됩니다.

    • sha256WithRSAEncryption

참고

쿼럼 인증을 사용하거나 쿼럼 인증을 사용할 계획인 경우 쿼럼 인증 및 2FA 섹션을 참조하십시오.

CMU와 키 페어를 사용하여 2FA가 활성화된 새 CO 사용자를 생성합니다.

2FA가 활성화된 CO 사용자를 생성하려면
  1. 한 터미널에서 다음 단계를 수행합니다.

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

      /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
    2. CO로 로그인하고 다음 명령을 사용하여 2FA가 있는 새 사용자 MFA를 생성합니다.

      aws-cloudhsm>createUser CO MFA <CO USER NAME> -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)? yCreating 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:
    3. 위 터미널을 이 상태로 둡니다. Enter 키를 누르거나 파일 이름을 입력하면 안 됩니다.

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

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

      /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
    2. 다음 명령을 사용하여 퍼블릭-프라이빗 키 페어를 생성합니다.

      openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
      openssl rsa -pubout -in private_key.pem -out public_key.pem
    3. 다음 명령을 실행하여 authdata 파일에서 다이제스트를 추출하기 위한 json 쿼리 기능을 설치합니다.

      sudo yum install jq
    4. 다이제스트 값을 추출하려면 먼저 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
    5. 다음과 같이 퍼블릭 키 콘텐츠를 변환하고 "\n"을 추가하며 공백을 제거합니다.

      -----BEGIN PUBLIC KEY-----\n<PUBLIC KEY>\n-----END PUBLIC KEY-----
      중요

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

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

    6. 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":”” } ] }
    7. 다음 명령을 사용하여 토큰 파일에 서명합니다.

      openssl pkeyutl -sign -in digest1.bin -inkey private_key.pem -pkeyopt digest:sha256 | base64 Output Expected: <"THE SIGNATURE">
      참고

      위 명령에서 볼 수 있듯이, openssl dgst 서명 대신 openssl pkeyutl을 사용합니다.

    8. 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==" } ] }
  3. 첫 번째 터미널로 돌아가서 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 관리

암호 변경을 사용하여 2FA 사용자의 암호를 변경하거나, 2FA를 활성화 또는 비활성화하거나, 2FA 키를 교체합니다. 2FA를 활성화할 때마다 2FA 로그인을 위한 퍼블릭 키를 제공해야 합니다.

암호 변경은 다음 시나리오 중 하나를 수행합니다.

  • 2FA 사용자의 암호 변경

  • 2FA가 아닌 사용자의 암호 변경

  • 2FA가 아닌 사용자에게 2FA 추가

  • 2FA 사용자의 2FA 삭제

  • 2FA 사용자의 키 교체

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

2FA가 활성화된 CO 사용자의 암호를 변경하거나 키를 교체하려면
  1. CMU를 사용하여 2FA가 활성화된 상태에서 CO로 HSM에 로그인합니다.

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

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

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

  3. 프라이빗 키를 사용하여 authdata 파일의 다이제스트에 서명하고 서명과 퍼블릭 키를 JSON 형식의 authdata 파일에 추가한 다음 CMU에 authdata 파일 위치를 제공하십시오. 자세한 내용은 구성 참조 섹션을 참조하십시오.

    참고

    클러스터는 쿼럼 인증 및 2FA에 동일한 키를 사용합니다. 쿼럼 인증을 사용하거나 쿼럼 인증을 사용할 계획인 경우 쿼럼 인증 및 2FA 섹션을 참조하십시오.

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

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

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

    CMU는 암호 변경 작업을 확인하라는 메시지를 표시합니다.

    참고

    2FA 요구 사항을 제거하거나 쿼럼 인증 사용자이기도 한 2FA 사용자의 암호를 변경하면 해당 쿼럼 사용자의 MoFN 사용자 등록도 제거됩니다. 쿼럼 사용자 및 2FA에 대한 자세한 내용은 쿼럼 인증 및 2FA 섹션을 참조하십시오.

  3. y를 입력합니다.

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

구성 참조

다음은 CMU 생성 요청 및 응답 모두에 대한 authdata 파일의 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 형식의 문자열로 삽입되었습니다. createUserchangePswd에 대한 응답에 이를 입력합니다.

서명

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

버전

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