승인된 요청 서명 검증

승인된 각 액세스 승인 요청은 승인을 검증하기 위해 비대칭 암호화 키로 서명됩니다. 승인된 요청은 Google 관리 키 또는 고객 제공 Cloud KMS 키로 서명될 수 있습니다.

서명을 검증하면 직렬화된 승인된 요청의 바이트 문자열이 유효한지 확인할 수 있습니다. 승인 콘텐츠의 검증을 완료하려면 메시지를 역직렬화하고 역직렬화된 메시지를 승인된 요청의 콘텐츠와 비교해야 합니다.

시작하기 전에

리소스의 액세스 승인 서비스 계정에 승인된 요청 서명을 확인하는 데 필요한 권한이 있는지 확인하려면 키, 키링 또는 키 프로젝트에 대한 Cloud KMS CryptoKey 서명자/확인자(roles/cloudkms.signerVerifier) IAM 역할을 리소스의 액세스 승인 서비스 계정에 부여해 달라고 관리자에게 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

관리자는 커스텀 역할이나 다른 사전 정의된 역할을 통해 리소스의 액세스 승인 서비스 계정에 필요한 권한을 부여할 수도 있습니다.

Google 관리 키를 사용하여 서명된 요청 검증

  1. Google Cloud 콘솔에서 액세스 승인 페이지로 이동합니다.

    액세스 승인으로 이동

  2. 검증하려는 승인된 액세스 승인 요청을 찾아 선택합니다. 요청 세부정보 페이지가 열립니다.

  3. Google 관리 공개 키에서 content_copy 복사를 클릭합니다.

  4. Cloud Shell을 연 다음 공개 키를 public_key라는 새 파일로 저장합니다.

    echo GOOGLE_MANAGED_PUBLIC_KEY > ./public_key
    

    GOOGLE_MANAGED_PUBLIC_KEYGoogle 관리 공개 키 필드의 콘텐츠로 바꿉니다.

  5. Google Cloud 콘솔의 요청 세부정보 페이지에서 서명 아래에 있는 content_copy 복사를 클릭합니다.

  6. Cloud Shell을 열고 서명을 signature.txt라는 새 파일로 저장합니다.

    echo SIGNATURE > ./signature.txt
    

    SIGNATURE서명 필드의 콘텐츠로 바꿉니다.

  7. base64 명령어를 사용하여 서명을 디코딩하고 결과를 decoded_signature로 저장합니다.

    base64 ./signature.txt -d > ./decoded_signature
    
  8. Google Cloud 콘솔의 요청 세부정보 페이지에서 직렬화된 승인 요청 아래에 있는 content_copy 복사를 클릭합니다.

  9. Cloud Shell을 열고 직렬화된 승인 요청을 serialized_approval_request.txt라는 새 파일로 저장합니다.

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    SERIALIZED_APPROVAL_REQUEST직렬화된 승인 요청 필드의 콘텐츠로 바꿉니다.

  10. 직렬화된 승인 요청을 디코딩하고 결과를 decoded_serialized_approval_request로 저장합니다.

    base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
    
  11. openssl을 사용하여 서명을 확인합니다.

    openssl dgst \
        -sha256 \
        -verify ./public_key \
        -signature ./decoded_signature \
        ./decoded_serialized_approval_request
    

    서명이 유효하면 출력은 Verified OK입니다. 이렇게 표시된다면 직렬화된 승인 요청이 유효한 것입니다.

고객 제공 키를 사용하여 서명된 요청 검증

  1. Google Cloud 콘솔에서 액세스 승인 페이지로 이동합니다.

    액세스 승인으로 이동

  2. 검증하려는 승인된 액세스 승인 요청을 찾아 선택합니다. 요청 세부정보 페이지가 열립니다.

  3. Google Cloud 콘솔의 요청 세부정보 페이지에서 서명 아래에 있는 content_copy 복사를 클릭합니다.

  4. Cloud Shell을 열고 서명을 signature.txt라는 새 파일로 저장합니다.

    echo SIGNATURE > ./signature.txt
    

    SIGNATURE서명 필드의 콘텐츠로 바꿉니다.

  5. 서명을 디코딩하고 결과를 decoded_signature로 저장합니다.

    base64 ./signature.txt -d > ./decoded_signature
    
  6. Google Cloud 콘솔의 요청 세부정보 페이지에서 직렬화된 승인 요청 아래에 있는 content_copy 복사를 클릭합니다.

  7. Cloud Shell을 열고 직렬화된 승인 요청을 serialized_approval_request.txt라는 새 파일로 저장합니다.

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    SERIALIZED_APPROVAL_REQUEST직렬화된 승인 요청 필드의 콘텐츠로 바꿉니다.

  8. 직렬화된 승인 요청을 디코딩하고 결과를 decoded_serialized_approval_request로 저장합니다.

    base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
    
  9. 고객 관리 키에서 키의 리소스 식별자를 기록해 둡니다.

  10. 이전 단계에서 식별한 키의 공개 키를 검색합니다. 다운로드한 공개 키를 PEM 형식의 ./public_key로 저장합니다.

  11. openssl을 사용하여 서명을 확인합니다.

    openssl dgst \
        -sha256 \
        -verify ./public_key \
        -signature ./decoded_signature \
        ./decoded_serialized_approval_request
    

    서명이 유효하면 출력은 Verified OK입니다. 이렇게 표시된다면 직렬화된 승인 요청이 유효한 것입니다.