Azure Functions에서 액세스 키 사용

Azure Functions 접근 키는 함수 엔드포인트에 대한 접근 권한을 부여하는 공유 비밀 역할을 합니다. 이 문서에서는 Functions에서 지원하는 액세스 키의 종류와 액세스 키로 작업하는 방법을 설명합니다.

접근 키는 원치 않는 접근으로부터 어느 정도 보호를 제공하지만, 운영 환경에서 HTTP 엔드포인트를 안전하게 보호하는 다른 옵션도 고려해 보세요. 예를 들어, 공개 앱에서 공유 비밀을 배포하지 마세요. 공용 클라이언트가 함수를 호출한다면, 다음과 같은 보안 메커니즘을 구현하는 것을 고려해 보세요:

접근 키는 HTTP 트리거 함수에서 HTTP 권한의 기반을 제공합니다. 자세한 내용은 권한 부여 수준을 참조하세요.

액세스 키 유형

액세스 키의 범위와 키가 지원하는 작업은 액세스 키의 유형에 따라 달라집니다.

키 유형 키 이름 HTTP 인증 수준 설명
기능 default 또는 사용자 정의 function 특정 함수 엔드포인트에만 액세스할 수 있습니다.
Host default 또는 사용자 정의 function 함수 앱의 모든 함수 엔드포인트에 액세스할 수 있습니다.
Master _master admin 함수 앱에서 런타임 REST API에 대한 관리 액세스도 제공하는 특수 호스트 키입니다. 마스터 키는 함수 앱에서 권한을 높여주므로, 이 키를 제3자와 공유하거나 네이티브 클라이언트 애플리케이션에 배포하지 마세요.
시스템 확장에 따라 다름 해당 없음 특정 확장에는 웹후크 엔드포인트에 액세스하도록 시스템 관리 키가 필요할 수 있습니다. 시스템 키는 내부 구성 요소가 호출하는 확장 특화 기능 엔드포인트를 위해 설계되었습니다. 예를 들어 Event Grid 트리거의 경우 트리거 엔드포인트 호출 시 구독에서 시스템 키를 사용해야 합니다. Durable Functions는 또한 시스템 키를 사용하여 Durable Task 확장 API를 호출합니다.
특정 확장만 시스템 키를 만들 수 있습니다. 해당 값을 명시적으로 설정할 수 없습니다. 다른 키와 마찬가지로 포털에서 또는 키 API를 사용하여 키에 대한 새 값을 생성할 수 있습니다.

각 키에는 참고용 이름이 있습니다. 함수 앱과 함수 레벨은 각각 기본 키로 이름이 default있습니다. function 키는 호스트 키보다 우선합니다. 두 키가 같은 이름을 가질 경우, 항상 기능 키가 사용됩니다.

다음 표에서는 다양한 종류의 액세스 키에 대한 사용을 비교합니다.

작업 범위 키 유형
함수 실행 특정 함수 함수
함수 실행 모든 함수 함수 또는 호스트
admin 엔드포인트 호출 함수 앱 마스터
Durable Task 확장 API 호출 함수 앱* 시스템
확장 전용 웹훅(내부)을 호출하세요 함수 앱* 시스템

*범위는 확장에 의해 결정됩니다.

접근 키 요구사항

Functions에서 액세스 키는 URL로부터 안전한 base-64 문자열로 인코딩된 32바이트 배열을 임의로 생성합니다. 직접 접근 키를 생성해 Functions와 함께 사용할 수 있지만, 기본 접근 키 생성 과정을 사용하는 것이 좋습니다.

함수에서 생성된 액세스 키에는 액세스 키의 유형과 Azure Functions에서 생성한 것을 나타내는 특수 서명 및 체크섬 값이 포함됩니다. 키에 포함된 이러한 추가 요소들은 보안 스캔 및 기타 자동화 과정에서 이러한 비밀의 출처를 더 쉽게 파악할 수 있게 합니다.

Functions가 키를 생성할 수 있게 하려면, 키를 생성하는 데 사용할 수 있는 어떤 API에도 키를 value 제공하지 마세요.

접근 키 저장

Azure의 함수 앱은 키를 저장하고 정지할 때 암호화합니다. 기본적으로 이 설정은 AzureWebJobsStorage 제공된 계정 내 블롭 스토리지 컨테이너에 키를 저장합니다. 설정을 사용 AzureWebJobsSecretStorageType 해 이 기본 동작을 무시하고 키를 다음 대체 위치 중 하나에 저장하세요:

위치 설명
두 번째 스토리지 계정 blob Functions 런타임에서 사용하는 것과 다른 저장소 계정의 Blob 저장소에 키를 저장합니다. 사용되는 특정 계정 및 컨테이너는 설정에 설정된 SAS(공유 액세스 서명) URL로 AzureWebJobsSecretStorageSas 정의됩니다. SAS URL이 변경되면 AzureWebJobsSecretStorageSas 설정을 유지해야 합니다.
Azure Key Vault keyvault 열쇠는 열쇠 금고에 저장 AzureWebJobsSecretStorageKeyVaultUri됩니다.
파일 시스템 files 키는 로컬 파일 시스템에 유지되며, 이는 Functions v1.x의 기본값입니다. 파일 시스템 스토리지는 권장되지 않습니다.
Kubernetes 비밀 kubernetes 키는 리소스 집합 AzureWebJobsKubernetesSecretName에 저장합니다. 함수 앱이 Kubernetes에 배포된 경우에만 지원됩니다. Azure Functions Core Tools는 Kubernete 클러스터에 앱 배포하는 데 사용하는 경우 값을 자동으로 생성합니다. 변경할 수 없는 비밀 은 지원되지 않습니다.
Azure Container Apps 비밀 containerapps 키는 Container Apps의 내부 비밀 관리 시스템인 Azure Container Apps 비밀 저장소에 저장됩니다. 함수 앱이 Azure Container Apps에 배포된 경우에만 지원됩니다. 자세한 내용은 ' 컨테이너 앱 비밀 저장소 구성 설정'을 참조하세요.

Key Vault를 키 저장소로 사용할 때, 필요한 앱 설정은 앱이 Key Vault에 어떻게 인증하는지에 따라 달라집니다: 시스템 할당 관리 신원, 사용자 지정 관리 식별, 또는 앱 등록 중 하나입니다.

설정 이름 시스템 할당 사용자 할당 앱 등록
AzureWebJobsSecretStorageKeyVaultUri Yes Yes Yes
AzureWebJobsSecretStorageKeyVaultClientId No Yes Yes
AzureWebJobsSecretStorageKeyVaultClientSecret No No Yes
AzureWebJobsSecretStorageKeyVaultTenantId No No Yes

중요합니다

비밀은 AzureWebJobsSecretStorageKeyVaultUri 설정을 통해 개별 함수 앱으로 범위가 지정되지 않습니다. 여러 함수 앱이 동일한 Key Vault를 사용하도록 구성된 경우 동일한 비밀을 공유하므로 잠재적으로 키 충돌 또는 덮어쓰기가 발생할 수 있습니다. 의도하지 않은 동작을 방지하려면 각 함수 앱에 별도의 Key Vault 인스턴스를 사용하는 것이 좋습니다.

액세스 키로 엔드포인트에 전화를 걸기

HTTP로 트리거된 함수를 호출하려면 함수 이름이 포함된 URL을 사용해 호출할 수 있습니다. 함수의 권한 수준을 이외 anonymous의 값으로 설정할 때는 요청 시 접근 키를 반드시 제공해야 합니다. URL 내에 쿼리 문자열이나 요청 헤더x-functions-key()를 사용하여 ?code= 접근 키를 포함할 수 있습니다. 자세한 내용은 액세스 키 권한 부여를 참조하세요.

런타임 REST API(/admin/ 아래에 있음)에 액세스하려면 _master 요청 헤더에 마스터 키(x-functions-key)를 제공해야 합니다. 사이트 속성을 설정 functionsRuntimeAdminIsolationEnabled 하여 관리 엔드포인트를 비활성화할 수 있습니다.

함수 액세스 키 가져오기

다음 Azure Resource Manager API를 사용하여 프로그래밍 방식으로 함수 및 호스트 키를 가져올 수 있습니다.

Azure Resource Manager API를 호출하는 방법을 알아보려면 Azure REST API 참조를 참조하세요.

Note

함수 앱을 Azure Container Apps에 배포하고 를 사용할 AzureWebJobsSecretStorageType=ContainerApps때는 Container Apps 전용 메서드를 사용해 함수 키를 가져와야 합니다. 자세한 내용은 컨테이너 앱 문서의 '접근 키 관리 '를 참조하세요.

REST API를 사용하지 않고도 이 방법들을 사용해 접근 키를 얻을 수 있습니다.

  1. Azure 포털에 로그인한 후 Function App을 검색하고 선택하세요.

  2. 사용할 함수 앱을 선택합니다.

  3. 왼쪽 메뉴에서 함수를 확장한 다음 앱 키를 선택합니다.

    앱 키 페이지가 표시됩니다. 이 페이지에는 호스트 키가 표시되어 있어 앱 내 모든 기능에 접근할 수 있습니다. 또한 모든 함수 앱 API에 대한 관리자 수준의 액세스 권한을 제공하는 시스템 키도 표시됩니다.

특정 함수에 키를 사용하여 최소 권한을 연습할 수도 있습니다. 특정 HTTP 트리거 함수의 함수 키 탭에서 함수별 키를 가져올 수 있습니다.

팁 (조언)

Azure Functions Core Tools 명령 func azure functionapp list-functions--show-keys 어와 옵션을 사용해 함수에 대한 접근 키를 얻을 수도 있습니다. 자세한 내용은 Azure Functions 핵심 도구 참조를 참조하세요.

액세스 키 갱신 또는 만들기

액세스 키 값을 갱신하거나 만드는 경우 함수를 호출하는 모든 클라이언트에 업데이트된 키 값을 수동으로 다시 배포해야 합니다.

다음 Azure Resource Manager API를 사용하여 프로그래밍 방식으로 함수 및 호스트 키를 갱신하거나 새로 만들 수 있습니다.

Azure Resource Manager API를 호출하는 방법을 알아보려면 Azure REST API 참조를 참조하세요.

REST API에 대한 호출을 수동으로 만들지 않고도 이러한 메서드를 사용하여 액세스 키를 가져올 수 있습니다.

  1. Azure 포털에 로그인한 후 Function App을 검색하고 선택하세요.

  2. 사용할 함수 앱을 선택합니다.

  3. 왼쪽 메뉴에서 함수를 확장한 다음 앱 키를 선택합니다.

    앱 키 페이지가 표시됩니다. 이 페이지에는 호스트 키가 표시되어 있어 앱 내 모든 기능에 접근할 수 있습니다. 또한 모든 함수 앱 API에 대한 관리자 수준의 액세스 권한을 제공하는 시스템 키도 표시됩니다.

  4. 갱신하고 싶은 키 옆에서 '갱신' 키 값을 선택한 다음, '갱신 후 저장'을 선택하세요.

특정 HTTP 트리거 함수의 함수 키 탭에서 함수 키를 갱신할 수도 있습니다.

액세스 키 삭제

다음 Azure Resource Manager API를 사용하여 프로그래밍 방식으로 함수 및 호스트 키를 삭제할 수 있습니다.

Azure Resource Manager API를 호출하는 방법을 알아보려면 Azure REST API 참조를 참조하세요.