다음을 통해 공유


Azure Functions에서 액세스 키 사용

Azure Functions를 사용하면 비밀 키를 사용하여 함수 엔드포인트에 대한 액세스를 더 어렵게 만들 수 있습니다. 이 문서에서는 Functions에서 지원하는 다양한 종류의 액세스 키와 액세스 키로 작업하는 방법을 설명합니다.

액세스 키는 원치 않는 액세스를 어느 정도 완화할 수 있지만 프로덕션 환경에서는 HTTP 엔드포인트를 보호하기 위한 다른 옵션을 고려해야 합니다. 예를 들어 공용 앱에 공유 비밀을 배포하는 것은 좋지 않습니다. 공용 클라이언트에서 함수가 호출되는 경우 다음과 같은 보안 메커니즘을 구현하는 것을 고려해야 합니다.

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

키 이해

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

키 유형 키 이름 HTTP 인증 수준 설명
Function default 또는 사용자 정의 function 특정 함수 엔드포인트에만 액세스할 수 있습니다.
호스트 default 또는 사용자 정의 function 함수 앱의 모든 함수 엔드포인트에 액세스할 수 있습니다.
마스터 _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와 함께 사용할 수 있지만, 대신 Functions에서 모든 액세스 키를 생성하도록 허용하는 것이 좋습니다.

함수에서 생성된 액세스 키에는 액세스 키의 형식을 나타내고 Azure Functions에서 생성한 특수 서명 및 체크섬 값이 포함됩니다. 키 자체에 이러한 추가 구성 요소를 포함하면 보안 검사 및 기타 자동화된 프로세스 중에 이러한 종류의 비밀의 출처를 훨씬 쉽게 확인할 수 있습니다.

Functions에서 키를 생성할 수 있도록 하려면 키를 생성하는 데 사용할 수 있는 API에 키 value를 제공하지 마세요.

키 스토리지 관리

키는 Azure에 함수 앱의 일부로 저장되며 나머지는 암호화되어 있습니다. 기본적으로 키는 AzureWebJobsStorage 설정에서 제공하는 계정의 Blob Storage 컨테이너에 저장됩니다. AzureWebJobsSecretStorageType 설정을 사용하여 이 기본 동작을 재정의하고, 대신 다음 대체 위치 중 하나에 키를 저장할 수 있습니다.

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

키 스토리지에 Key Vault를 사용할 때 필요한 앱 설정은 시스템 할당 설정 또는 사용자 할당 설정이며 이는 관리 ID 형식에 따라 다릅니다.

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

액세스 키 사용

HTTP 트리거 함수는 일반적으로 https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME> 형식의 URL을 사용하여 호출할 수 있습니다. 지정된 함수에 대한 권한 부여 수준이 anonymous 이외의 값으로 설정된 경우, 요청에 액세스 키도 제공해야 합니다. ?code= 쿼리 문자열 또는 요청 헤더(x-functions-key)를 사용하여 URL에 액세스 키를 제공할 수 있습니다. 자세한 내용은 액세스 키 권한 부여를 참조하세요.

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

함수 액세스 키 가져오기

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

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

REST API를 사용하지 않고도 이러한 메서드를 사용하여 액세스 키를 가져올 수 있습니다.

  1. Azure Portal에 로그인한 다음, 함수 앱을 검색하고 선택합니다.

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

  3. 왼쪽 창에서 Functions를 확장한 다음 앱 키를 선택합니다.

    앱 키 페이지가 표시됩니다. 이 페이지에는 앱의 모든 함수에 액세스하는 데 사용할 수 있는 호스트 키가 표시됩니다. 또한 모든 함수 앱 API에 대한 관리자 수준의 액세스 권한을 제공하는 시스템 키도 표시됩니다.

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

액세스 키 갱신 또는 만들기

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

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

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

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

  1. Azure Portal에 로그인한 다음, 함수 앱을 검색하고 선택합니다.

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

  3. 왼쪽 창에서 Functions를 확장한 다음 앱 키를 선택합니다.

    앱 키 페이지가 표시됩니다. 이 페이지에는 앱의 모든 함수에 액세스하는 데 사용할 수 있는 호스트 키가 표시됩니다. 또한 모든 함수 앱 API에 대한 관리자 수준의 액세스 권한을 제공하는 시스템 키도 표시됩니다.

  4. 갱신할 키 옆에 있는 키 값 갱신을 선택한 다음 갱신 및 저장을 선택합니다.

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

액세스 키 삭제

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

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