HMAC 키

설정

이 페이지에서는 Cloud Storage XML API에 대한 요청을 인증하는 데 사용할 수 있는 해시 기반 메시지 인증 코드(HMAC) 키를 설명합니다. HMAC 키는 다른 클라우드 스토리지 제공업체와 Cloud Storage 간에 데이터를 이동하려는 경우에 유용합니다. HMAC 키를 사용하면 Cloud Storage에 액세스할 때 기존 코드를 재사용할 수 있기 때문입니다.

개요

HMAC 키는 계정(일반적으로 서비스 계정)과 연결된 사용자 인증 정보의 유형입니다. HMAC 키를 사용하여 HMAC-SHA256 서명 알고리즘을 사용하는 서명을 만듭니다. 그러면 생성한 서명은 Cloud Storage XML API에 대한 요청에 포함됩니다. 서명은 HMAC 키와 연결된 계정에서 지정된 요청이 승인되었음을 나타냅니다.

HMAC 키는 액세스 ID보안 비밀의 2가지 요소로 구성되어 있습니다.

  • 액세스 ID: 특정 계정에 연결된 영숫자 문자열입니다.

    • 서비스 계정에 연결된 경우 문자열 길이는 61자입니다.

    • 사용자 계정에 연결된 경우 문자열 길이는 24자입니다.

    다음은 액세스 ID의 예시입니다.

    GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA

  • 보안 비밀: 특정 액세스 ID에 연결되는 40자로 된 Base-64 인코딩 문자열입니다. 보안 비밀은 사용자와 Cloud Storage만 아는 사전 공유된 키입니다. 보안 비밀을 사용하여 인증 프로세스의 일부로 서명을 만듭니다. 다음은 보안 비밀의 예시입니다.

    bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ

액세스 ID와 보안 비밀은 모두 HMAC 키를 고유하게 식별하지만, 보안 비밀은 서명을 생성하는 데 사용되므로 훨씬 더 민감한 정보로 간주됩니다.

원하는 경우 리소스에 restrictAuthTypes 제약조건을 사용 설정하여 HMAC 키로 서명된 요청에 대한 액세스를 제한할 수 있습니다.

보안 비밀 저장

서비스 계정의 HMAC 키를 만들 때 키에 대한 보안 비밀은 한 번만 제공됩니다. 보안 비밀과 연결된 액세스 ID는 안전하게 저장해야 합니다. 보안 비밀을 분실한 경우에는 사용자 또는 Google Cloud 누구도 이를 복구할 수 없으며, 요청을 계속 인증하기 위해서는 서비스 계정에 대해 새 HMAC 키를 만들어야 합니다.

사용자 계정의 HMAC 키를 만들려면 사용자 계정으로 Google Cloud 콘솔에 로그인하고 resourcemanager.projects.get IAM 권한이 있는 프로젝트의 Cloud Storage 설정 메뉴에 있는 상호 운용성 탭으로 이동합니다. 키가 생성되면 resourcemanager.projects.get 권한이 있는 모든 프로젝트의 상호 운용성 탭에서 키의 보안 비밀을 볼 수 있습니다.

보안 비밀 저장을 위한 권장사항

  • HMAC 키 보안 비밀을 공유하지 마세요. HMAC 키 보안 비밀은 다른 액세스 사용자 인증 정보와 마찬가지로 취급해야 합니다.

  • 보안 권장사항으로 키 순환 과정에서 키를 정기적으로 변경해야 합니다.

  • HMAC 키를 다른 사람이 사용하고 있다고 생각되면 영향을 받는 HMAC 키를 즉시 삭제하여 새로운 키를 만들어야 합니다.

  • HMAC 키를 변경할 때는 이전 키를 삭제하기 전에 코드를 새 HMAC 키로 업데이트해야 합니다. HMAC 키를 삭제하면 키가 즉시 무효화되며 복구할 수 없습니다.

제한사항

  • HMAC 키는 JSON API가 아닌 XML API에 대한 요청을 수행하는 경우에만 사용할 수 있습니다.

  • 서비스 계정별로 최대 10개의 HMAC 키가 있을 수 있습니다. 삭제된 키는 이 한도에 포함되지 않습니다.

  • 생성 후 서비스 계정 HMAC 키를 사용할 수 있게 될 때까지 최대 30가 걸릴 수 있습니다. 서비스 계정을 삭제한 후에도 해당 계정에 속한 HMAC 키는 최대 5분 동안 계속 작동할 수 있습니다. 반대로 HMAC 키를 소유한 서비스 계정을 삭제 취소한 후 다시 사용할 수 있게 될 때까지 최대 5분이 걸릴 수 있습니다.

  • 리소스에 restrictAuthTypes 제약조건을 사용 설정하면 해당 리소스에 지정된 계정 유형의 HMAC 키를 더 이상 만들거나 활성화할 수 없습니다.

사용자 계정 HMAC 키에서 마이그레이션

특히 프로덕션 워크로드의 경우에는 일반적으로 HMAC 키와 사용자 계정을 연결하는 것보다 HMAC 키와 서비스 계정을 연결하는 것이 더 적합합니다.

  • 서비스 계정은 더 효율적인 관리 감독 기능을 제공하므로 개별 사용자가 보유한 계정에 대한 보안 및 개인정보 보호 관련 사항을 삭제할 수 있습니다.

  • 서비스 계정은 사용자의 프로젝트 참여 중단이나 퇴사로 인해 사용자 계정 사용이 중지되는 경우와 같이 사용자 계정 사용과 관련된 서비스 중단의 위험을 줄여줍니다.

현재 사용자 계정에서 HMAC 키를 사용 중이지만 서비스 계정으로 마이그레이션하려는 경우 다음 사항에 유의하세요.

  • 프로젝트에 서비스 계정이 있어야 하고 이 계정과 연결된 HMAC 키가 있어야 합니다.

  • 서비스 계정은 Cloud Storage에서 작업을 수행하는 데 필요한 필수 권한을 부여받아야 합니다.

    객체 작업에 필요한 광범위한 권한은 Storage Object Admin 역할에 포함되어 있지만 다른 작업을 수행하기 위해서는 별도의 서비스 계정이 필요할 수 있습니다. 예를 들어 읽기에 Storage Object Viewer 역할이 포함된 서비스 계정 1개, 쓰기에는 Storage Object Creator 역할이 포함된 다른 서비스 계정이 필요할 수 있습니다.

  • 업데이트를 프로덕션에 푸시하기 전에 서비스 계정이 예상대로 작동하는지 테스트해야 합니다.

  • 프로덕션 작업을 서비스 계정 HMAC 키로 전환한 후 다음 Cloud Monitoring 측정항목에서 사용자 계정과 연결된 HMAC 키가 더 이상 사용되지 않는지 확인해야 합니다.

    측정항목 설명
    storage.googleapis.com/authn/authentication_count 요청 인증을 위해 HMAC 키가 사용된 횟수입니다.

    마이그레이션 진행 중에 계속 사용되는 사용자 계정 키를 추적하도록 다음 라벨을 설정할 수 있습니다.

    • access_id: 요청을 수행한 액세스 ID를 식별합니다. 또한 키 순환 중 access_id를 사용하여 한 키에서 다른 키로의 트래픽 이동을 감시할 수 있습니다.

    • authentication_method: 키가 사용자 계정 또는 서비스 계정 키인지 확인합니다.

  • HMAC 키가 더 이상 사용되지 않는 것을 확인했으면 해당 HMAC 키를 삭제해야 합니다. 이렇게 하면 데이터에 대한 부적절한 액세스의 위험이 줄어듭니다.

  • 사용자 계정이 Cloud Storage 리소스에 액세스하는 용도로 더 이상 사용되지 않으면 이 계정에 포함된 Cloud Storage에 대한 액세스 권한을 취소합니다.

  • 원하는 경우 보안 강화를 위해 사용자 계정 HMAC 키에 restrictAuthTypes 제약조건을 사용 설정할 수 있습니다.

다음 단계