Python Functions에서 Azure Key Vault에 액세스

당신은 왜 여기에 있습니까?

Python Azure 함수를 개발 중이며 Azure Key Vault에서 비밀에 액세스하려고합니다.

지금까지 무엇을 했습니까?

이 문서의 단계에서는 이미 다음을 수행했다고 가정합니다.

  1. Azure Functions 확장을 사용하여 VS Code에서 로컬 Python Azure 함수 프로젝트를 만들었습니다.
  2. 로컬 프로젝트의 Python 함수를 Azure의 함수 앱에 배포했습니다.

이 단계에서 다음과 같은 코드가있을 수 있습니다.

def main(req: func.HttpRequest) -> func.HttpResponse:
    
    # do some stuff with hard-coded secrets here

    if success:
        return func.HttpResponse(
            'Success',
            status_code=200
        )
    else:
        return func.HttpResponse(
             'Something went wrong',
             status_code=404
        )

def main(req: func.HttpRequest) -> func.HttpResponse:
    
    # retrieve secrets from key vault instead

    if success:
        return func.HttpResponse(
            'Success',
            status_code=200
        )
    else:
        return func.HttpResponse(
             'Something went wrong',
             status_code=404
        )

1. 로컬 프로젝트 변경

VS 코드에서 로컬 프로젝트를 약간 변경하여 시작하겠습니다.

우리 지역의 기계가되지 않습니다 (그리고 이후 해야 되지 않음) 키 볼트 암시 액세스 할 수 있습니다, 우리는 당신이 여전히 배포 된 함수의 동작을 시뮬레이션하는 방식으로 로컬 디버깅 할 수 있도록 자리의 비밀을 추가해야합니다.

로컬 프로젝트를 처음 만들었을 때 선택한 프로젝트 폴더에 여러 파일이 자동으로 생성되었음을 알 수 있습니다. 라는 파일을 찾습니다 local.settings.json. 자리 표시 자 키 저장소 암호 역할을하려면이 파일에 몇 줄을 추가해야합니다.

{
  “IsEncrypted”: false,
  “Values”: {
    “AzureWebJobsStorage”: “”,
    “FUNCTIONS_WORKER_RUNTIME”: “python”,
    “UsernameFromKeyVault”: “James”,
    “PasswordFromKeyVault”: “Pwd”
  }
}

이 값은 os.getenv()함수 를 사용하여 Python 코드에서 액세스 할 수 있습니다 . 예를 들어 os.getenv('UsernameFromKeyVault')함수 코드를 호출하면 "James"값이 반환됩니다.

이제 함수를 다음과 같이 수정할 수 있습니다.

import os

import azure.functions as func

# access sensitive credentials from Azure Key Vault
user_name = os.getenv('UsernameFromKeyVault')
password = os.getenv('PasswordFromKeyVault')


def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    return func.HttpResponse(
        # reference credentials in function call
        f'Hello {user_name}, your password is {password}.',
        status_code=200
    )

키 값은 로컬 환경에서 검색되어 함수 반환에 사용되었습니다.

2. Azure에서 변경

다음으로 함수 환경에서 주요 자격 증명 모음 비밀에 액세스 할 수 있도록 Azure 리소스를 약간 변경합니다.

2.1. Function App 시스템 ID 활성화

Azure Portal에서 함수 앱으로 이동합니다. 에서 설정 -> 신원은 "ON"으로 상태를 설정합니다

2.2. 볼트에 비밀 추가

아직 수행하지 않은 경우 리소스 그룹에 새 Key Vault를 생성합니다. 볼트 생성 의 액세스 정책 섹션에서 "+ 액세스 정책 추가"라는 텍스트를 클릭합니다.

드롭 다운 상자를 클릭하여 템플릿 에서 구성 하고 "비밀 관리"를 선택합니다.

"선택한 항목 없음"이라는 텍스트를 클릭하고 오른쪽 패널에서 함수 앱의 이름을 검색하여 볼트에 대한 액세스 권한을 제공합니다.

"추가"를 클릭 한 다음 볼트를 만들기 전에 Key Vault에 대한 현재 액세스 정책 목록이 아래 목록과 같은지 확인합니다.

마지막으로 원하는 비밀을 볼트에 추가합니다. 이러한 비밀 의 값 이 동일 할 필요는 없지만 이름은 local.settings.json파일에 추가 한 것과 정확히 동일해야 합니다. 이 예에서는 이름을 UsernameFromKeyVault 및 PasswordFromKeyVault로 지정했습니다 . 요점을 설명하기 위해 볼트에 저장된 암호의 비밀 값도 변경했습니다.

2.3. 앱 구성에 볼트 암호 추가

이제 마지막 단계는 이러한 비밀을 함수 앱에 추가하는 것입니다. 함수 앱 구성 설정으로 새 탭을 여는 동안 브라우저의 탭에서 볼트를 열어 두어야합니다.

버튼을 클릭하여 새 애플리케이션 설정 을 만듭니다 .

다른 탭에서 사용자 이름 비밀 정보를 열고 활성화 된 버전을 클릭하여 세부 정보를 확인합니다. 여기에 Secret Identifier 라는 필드가 있습니다. 값을 복사하고 다른 탭으로 돌아갑니다.

이제이 값을 새 애플리케이션 설정의 값 필드에 붙여넣고 다음 형식으로 몇 가지 추가 텍스트를 추가하십시오.

@Microsoft.KeyVault(SecretUri=<copied-value-from-clipboard>)

UsernameFromKeyVault 및 PasswordFromKeyVault 암호 모두에 대해이 작업을 수행하면 응용 프로그램 설정 목록에 모두 녹색 확인 표시가있는 것을 볼 수 있습니다.

이 단계에서 함수를 배포하고 URL을 사용하여 실행하도록 모두 설정되었습니다. 함수 URL을 브라우저에 복사하면 이전과 동일한 메시지가 표시되지만 Key Vault에서 사용한 비밀 값이 표시됩니다.

Suggested posts

Langchain을 사용하여 ChatGPT 플러그인을 무료로 실행하는 방법

Langchain을 사용하여 ChatGPT 플러그인을 무료로 실행하는 방법

브라우저, 코드 해석기 등과 같은 새롭고 강력한 ChatGPT 플러그인에 대해 들어보셨을 것입니다. 그러나 문제가 있습니다. 플러그인에 대한 액세스는 대기자 명단으로 제한되어 있으므로 많은 사람들이 액세스할 수 없습니다.

내가 가장 많이 사용하는 코딩 리소스

내가 가장 많이 사용하는 코딩 리소스

이번 주에 저는 일일 이메일 목록의 회원으로부터 이메일을 받았습니다. 그들은 알고 싶어했습니다. 매일, 매주, 매월 어떤 리소스를 방문합니까? 좋은 질문입니다! 제 작업 흐름과 제가 사용하는 주요 리소스에 대한 통찰력을 공유하게 되어 기쁩니다.

Related posts

그 위협 아카이브: Vol 7 블랙 바스타

그 위협 아카이브: Vol 7 블랙 바스타

오늘날의 상호 연결된 세계에서 사이버 공격의 위협은 그 어느 때보다 만연해 있습니다. 사이버 범죄자와 국가 행위자는 지속적으로 취약점을 악용하고 귀중한 데이터를 도용하여 모든 규모의 조직에 상당한 위험을 초래합니다.

대명사는 정말 무섭다

너무 자주 그렇듯 갑자기 와닿는다 다시 중간쯤이야 <아니, 태평양에 있는 사람 말고 마룬, 카니발에 있는 사람> 모든 헤드라인이 시끄러워…..

취하기의 아이의 첫 번째 책

취하기의 아이의 첫 번째 책

(경고- 이것은 유쾌하게 전복하려는 풍자입니다. 절대 어린이용이 아닙니다.) 당신은 엄마와 아빠가 부엌에 숨어서 그 냄새나는 담배를 피우는 것을 본 적이 있습니다. 그들은 당신에게 말합니다.

위험한 대화

위험한 대화

우리가 이 행성에서 계속 번성하고 싶다면 위험한 대화를 해야 할 것입니다. 우리가 한 것, 우리가 하고 있는 것, 그리고 현재 우리가 계속하기로 설정한 것(또는 할 계획인 것)에 도전하는 것들.