AAD 보호 Azure 기능 액세스

자원 안전을 확보하는 것은 매우 중요하다.API나 다른 웹 사이트를 만들고 공용 인터넷에 노출할 때 필요하면 포트를 보호할 필요가 있습니다.
IP 제한은 엔드포인트에 액세스할 수 있는 클라이언트를 제한하는 일반적인 방법입니다.그러나 현재 고객의 모든 공공 IP를 관리하는 것은 점점 어려워지고 있습니다. 왜냐하면 고객은 어느 곳에서든 당신의 서비스에 접근할 수 있기 때문입니다.
icrosoft Azure에서 AAD(Azure Active Directory)는 OAuth 2.0, OpenID Connect, SAML 등을 통해 API/웹을 보호합니다.Azure Web Apps/Azure 기능과 같은 PaaS를 사용할 때 이 기능을 열면 단점을 보호할 수 있습니다.
이 글은 Azure에서 AAD를 사용하여 API를 보호하고 액세스하는 방법을 설명합니다.

선결 조건


이 글은 AAD(Azure Active Directory)가 무엇인지 설명하지 않았습니다.만약 네가 그것에 흥미가 있다면, 너는 이것을 검사할 수 있다.
  • Application and service principal objects in Azure Active Directory
  • 만약 당신이 아직 Azure 웹 응용 프로그램이나 Azure 기능을 만들지 않았다면, 나는 당신이 먼저 그것들을 만드는 것을 건의합니다.
  • Quickstart: Create an ASP.NET Core web app in Azure
  • Quickstart: Create a function in Azure using Visual Studio Code
  • Azure 함수 생성하기


    우선 관리되는 API의 Azure 리소스를 만들어야 합니다.
    HTTPTrigger 함수Quickstart: Create a function in Azure using Visual Studio Code를 생성합니다.
    몇 분 안에 자체 API를 게시할 수 있습니다.
    HTTPTrigger 함수를 Azure에 배치한 후 cURL 명령Postman이나 다른 HTTP 요청을 만드는 도구에서 호출합니다.
    인증 수준function을 설정하면 쿼리 매개 변수의 함수 키code=xxxx나 요청 헤더의 함수 키x-functions-key: xxxx를 사용하여 API를 호출할 수 있습니다.
    자세한 내용은 Azure Functions HTTP trigger 를 참조하십시오.

    그림 1.성공한 우체부 요청

    AAD 인증 사용


    개발하거나 무대에 오르는 환경에서 기능 키를 사용하여 기능 응용 프로그램을 보호할 수 있습니다.그러나 생산 중, 이 함수를 호출하는 모든 클라이언트에게 키를 나누어 줄 때, 함수 키를 안전하게 관리하기 어렵다.
    키가 유출되면 모든 프로그램의 설정을 변경해야 합니다.
    애플리케이션을 보호하고 인증/인증을 관리하기 위해 AAD(Azure Active Directory)를 사용할 수 있습니다.
    AAD는 각 애플리케이션에 고유한 ID를 할당하고 각 인증을 기록합니다.
    Azure Web App/Azure 기능에서 AAD auth 기능을 Azure 포털 또는 명령에서 사용할 수 있습니다.
    AAD auth는 Azure Function Linux 소비 계획(2020년 10월)에 적용되지 않는다고 생각합니다.
    참조Configure your App Service or Azure Functions app to use Azure AD login.

    This feature is currently not available on Linux Consumption plan for Azure Functions


    Function 응용 프로그램에 이 기능을 설정하면 AAD가 포트를 보호하기 때문에 HTTP 401 unauthrized로 돌아갑니다.

    그림 2.무단 애플리케이션 기능 요청

    신분 검증을 위한 방문 영패 얻기


    AAD로 보호된 기능 응용 프로그램에 접근하기 위해서는 AAD에서 이 기능 응용 프로그램의 접근 영패를 받아야 합니다.
    API 호출의 경우 Bearer 영패를 Authroization 헤더로 설정합니다.
    기능 응용 프로그램을 확인하려면 AAD에 클라이언트 응용 프로그램을 만들어야 합니다.
    Azure CLI를 사용하는 경우 다음과 같은 테스트를 위해 클라이언트 AAD 응용 프로그램을 만들 수 있습니다.
    az ad sp create-for-rbac -n "TestAuthClientApp"
    
    결과는 JSON으로 출력됩니다.스토리지 appIdpassword 를 통해 기능 애플리케이션을 검증합니다.

    그림 3.Azure CLI 결과
    기능 응용 프로그램의 접근 영패를 얻으려면 Azure 포털에서 기능 응용 프로그램 AAD ID를 대상으로 복사하십시오.
    [uthentication/Authorization]blade에서 검사할 수 있습니다.

    그림 4.기능 애플리케이션 ID
    호출https://login.microsoftonline.com/<Your AAD Tenant ID>/oauth2/token 방문 영패를 받습니다.
    cURL을 사용할 때 다음 명령이 유효합니다.
    curl -X POST https://login.microsoftonline.com/<TENANT ID>/oauth2/token  \
      -F grant_type=client_credentials \
      -F resource=<Web App CLIENT ID> \
      -F client_id=<Client Application ID> \
      -F client_secret=<SECRET>
    

    Function App을 요청하기 전에 Function App의 AAD App 설정을 변경해야 합니다.프로그램이 은밀한 권한 수여 흐름을 사용할 수 있도록 Access tokens 을 선택하십시오.

    영패가 있는 요청 기능 응용 프로그램


    함수 앱과 요청은 access_token 제목을 가지고 있으며, Authroization:Bearer xxxxBearer 사이의 공백이 필요합니다. 그리고 token 을 받아야 합니다.
    AAD가 API를 보호하기 때문에 함수 auth level을 HTTP 200 OK 에서 function 로 설정할 수 있습니다.

    다음 단계


    이제 AAD 보호 API를 사용합니다.하지만 AAD 클라이언트 응용 프로그램 자격 증명을 관리해야 합니다.더욱 안전한 방법은 위탁 관리 신분을 사용하여 Function App이 비밀 없이 Azure 서비스에 대한 인증을 할 수 있도록 하는 것이다.
    코드가 특정 서비스에서 실행되는 경우, 예를 들어 위탁 관리 신분을 사용하는 웹 응용 프로그램이나 기능 응용 프로그램, Azure는 자동으로 신분 검증을 관리합니다.
    What are managed identities for Azure resources?

    좋은 웹페이지 즐겨찾기