서비스 계정으로 Google Cloud 함수 인증 및 호출

(here의 표지 이미지 )

Google Cloud의 서비스는 한동안 사용되었습니다. Google Cloud Functions는 Google의 퍼블릭 클라우드 내에서 프로그래밍 방식의 기능을 만들고 구현하기 위한 Google Cloud Platform 내의 서버리스 이벤트 기반 서비스입니다.

모든 인프라 리소스는 Google Cloud Platform(GCP)에서 자동으로 프로비저닝 및 복구됩니다. GCP는 또한 작업할 수 있는 훌륭한 콘솔 명령 목록을 제공합니다.

Cloud Functions 인증



기능 인증에 적용할 수 있는 다양한 시나리오가 있습니다. 사용자 서비스 계정을 인증하기 위한 시나리오 중 하나입니다.

이 시점에서 이미 서비스 계정을 생성했다고 가정합니다. 첫 번째 단계로 시작하려면 서비스 계정을 IAM에 추가하세요. 이를 위해 GCP에서 IAM으로 이동하고 추가를 클릭합니다.


그렇게 하면 회원 이름을 입력할 수 있습니다. 거기에 서비스 계정 이름을 입력합니다. 다음으로 이 서비스 계정에 역할을 추가합니다.

서비스 계정을 사용하여 서비스를 인증하려면 서비스 계정에 다음 역할이 있는지 확인하세요.
  • 서비스 계정 토큰 생성자
  • 서비스 계정 사용자
  • 서비스 사용 소비자

  • 저장을 클릭하여 데이터를 저장합니다.

    토큰 생성 코드로 이동하기 전 마지막 설정은 서비스 계정에 대한 키를 생성하는 것입니다. GCP에서 서비스 계정으로 이동합니다. 서비스 계정을 표시하는 목록에서 키 만들기 옵션을 클릭합니다. 키 정보가 포함된 .json 파일을 다운로드해야 합니다. 민감한 정보가 포함된 imp 파일입니다. 자세한 내용은 here을 참조하십시오.

    이제 서비스 계정이 설정되었습니다. 이제 이 서비스 계정에 대한 인증 토큰을 가져와야 합니다. 이렇게 생성된 토큰은 서비스 계정으로 인증을 사용하는 GCP 서비스를 호출하는 데 사용할 수 있습니다. 내 시나리오에서 Google 클라우드 기능을 사용했습니다. 액세스하려는 서비스에 동일한 서비스 계정이 설정되어 있는지 확인하세요.



    이제 JWT 토큰을 생성하는 코드 스니펫을 살펴보겠습니다.

    from google.oauth2 import id_token
    from google.oauth2 import service_account
    import google.auth
    import google.auth.transport.requests
    from google.auth.transport.requests import AuthorizedSession
    import requests
    
    # path to your cloud function or any other service
    url = 'https://{region}-{project-id}.cloudfunctions.net/{cloud-function-name}'
    
    # path to you keys file that was downloaded when keys for SA were created
    keyFilePath = 'key.json'
    creds = service_account.IDTokenCredentials.from_service_account_file
    (keyFilePath,
    target_audience=url)
    # auth session
    authed_session = AuthorizedSession(creds)
    
    # make authenticated request and print the response, status_code
    resp = authed_session.get(url)
    
    # to verify an ID Token
    request = google.auth.transport.requests.Request()
    token = creds.token
    # print the generated token
    print(token)
    print(id_token.verify_token(token,request))
    


    그러면 후속 요청을 인증하는 데 필요한 JWT 토큰이 제공됩니다. 각 클라우드 서비스를 호출할 때 헤더에 이 토큰을 전달하기만 하면 됩니다.

    headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {token}'.format(token = token)
    }
    


    이 단계를 사용하여 토큰을 얻은 다음 GCP에서 호스팅되는 서비스를 호출할 수 있습니다. 동일한 코드와 단계를 사용하여 AWS Lambda 또는 다른 HTTP 요청에서 GCP 클라우드 함수를 호출할 수 있습니다.

    좋은 웹페이지 즐겨찾기