앱 id를 사용 하 여 Azure Stack 허브 리소스 액세스Use an app identity to access Azure Stack Hub resources

Azure Resource Manager를 통해 리소스를 배포 또는 구성 해야 하는 응용 프로그램은 자체 id로 표시 되어야 합니다.An application that needs to deploy or configure resources through Azure Resource Manager must be represented by its own identity. 사용자가 사용자 계정 이라는 보안 주체로 표시 되는 것 처럼 앱은 서비스 주체로 표시 됩니다.Just as a user is represented by a security principal called a user principal, an app is represented by a service principal. 서비스 주체는 앱에 대 한 id를 제공 하므로 앱에 필요한 권한만 위임할 수 있습니다.The service principal provides an identity for your app, allowing you to delegate only the necessary permissions to the app.

예를 들어 Azure Resource Manager를 사용 하 여 Azure 리소스를 인벤토리에 포함 하는 구성 관리 앱이 있을 수 있습니다.As an example, you may have a configuration management app that uses Azure Resource Manager to inventory Azure resources. 이 시나리오에서는 서비스 주체를 만들고, 해당 서비스 사용자에 게 "읽기 권한자" 역할을 부여 하 고, 구성 관리 앱을 읽기 전용 액세스로 제한할 수 있습니다.In this scenario, you can create a service principal, grant the "reader" role to that service principal, and limit the configuration management app to read-only access.

개요Overview

사용자와 마찬가지로 앱은 인증 하는 동안 자격 증명을 제공 해야 합니다.Like a user, an app must present credentials during authentication. 이 인증은 다음과 같은 두 가지 요소로 구성 됩니다.This authentication consists of two elements:

  • 클라이언트 ID 라고도 하는 응용 프로그램 ID 입니다.An Application ID, sometimes referred to as a Client ID. Active Directory 테 넌 트에서 앱 등록을 고유 하 게 식별 하는 GUID입니다.A GUID that uniquely identifies the app's registration in your Active Directory tenant.
  • 응용 프로그램 ID와 연결 된 암호 입니다.A secret associated with the application ID. 클라이언트 암호 문자열 (암호와 비슷함)을 생성 하거나 X509 인증서 (해당 공개 키를 사용 하는)를 지정할 수 있습니다.You can either generate a client secret string (similar to a password), or specify an X509 certificate (which uses its public key).

자신의 id로 앱을 실행 하는 것이 다음과 같은 이유로 사용자의 id로 실행 하는 것이 좋습니다.Running an app under its own identity is preferable to running it under the user's identity for the following reasons:

  • 더 강력한 자격 증명 -앱은 텍스트 공유 암호 대신 X509 인증서를 사용 하 여 로그인 할 수 있습니다.Stronger credentials - an app can sign in using an X509 certificate, instead of a textual shared secret/password.
  • 앱에 더 제한적인 사용 권한을 할당할 수 있습니다.More restrictive permissions can be assigned to an app. 일반적으로 이러한 권한은 앱이 수행 해야 하는 것으로 제한 됩니다 ( 최소 권한의 원칙 이라고 함).Typically, these permissions are restricted to only what the app needs to do, known as the principle of least privilege.
  • 자격 증명 및 사용 권한은 앱에 대 한 사용자 자격 증명으로 자주 변경 되지 않습니다.Credentials and permissions don't change as frequently for an app as user credentials. 예를 들어 사용자의 책임이 변경 되 면 암호 요구 사항에 따라 변경 내용이 적용 되거나 사용자가 회사를 떠날 때가 결정 됩니다.For example, when the user's responsibilities change, password requirements dictate a change, or when a user leaves the company.

디렉터리에 새 앱 등록을 만들어 시작 합니다. 그러면 연결 된 서비스 주체 개체 를 만들어 디렉터리 내에서 앱의 id를 나타냅니다.You start by creating a new app registration in your directory, which creates an associated service principal object to represent the app's identity within the directory.

이 문서에서는 Azure Stack 허브 인스턴스에 대해 선택한 디렉터리에 따라 서비스 주체를 만들고 관리 하는 프로세스를 시작 합니다.This article begins with the process of creating and managing a service principal, depending on the directory you chose for your Azure Stack Hub instance:

  • Azure Active Directory (AZURE AD).Azure Active Directory (Azure AD). Azure AD는 다중 테넌트, 클라우드 기반의 디렉터리 및 ID 관리 서비스입니다.Azure AD is a multi-tenant, cloud-based directory, and identity management service. 연결 된 Azure Stack 허브 인스턴스에서 Azure AD를 사용할 수 있습니다.You can use Azure AD with a connected Azure Stack Hub instance.
  • Active Directory Federation Services (AD FS).Active Directory Federation Services (AD FS). AD FS은 간소화 된 보안 id 페더레이션 및 SSO (web Single Sign-On) 기능을 제공 합니다.AD FS provides simplified, secured identity federation, and web single sign-on (SSO) capabilities. 연결 된 Azure Stack 허브 인스턴스와 연결 되지 않은 AD FS 모두 사용할 수 있습니다.You can use AD FS with both connected and disconnected Azure Stack Hub instances.

그런 다음 서비스 주체를 역할에 할당 하 여 리소스 액세스를 제한 하는 방법을 알아봅니다.Then you learn how to assign the service principal to a role, limiting its resource access.

Azure AD 앱 id 관리Manage an Azure AD app identity

Id 관리 서비스로 Azure AD를 사용 하 여 Azure Stack 허브를 배포한 경우 Azure에 대해 수행 하는 것과 같은 방식으로 서비스 사용자를 만듭니다.If you deployed Azure Stack Hub with Azure AD as your identity management service, you create service principals just like you do for Azure. 이 섹션에서는 Azure Portal 단계를 수행 하는 방법을 보여 줍니다.This section shows you how to perform the steps through the Azure portal. 시작 하기 전에 필요한 AZURE AD 권한이 있는지 확인 합니다.Check that you have the required Azure AD permissions before beginning.

클라이언트 암호 자격 증명을 사용 하는 서비스 주체 만들기Create a service principal that uses a client secret credential

이 섹션에서는 Azure AD 테 넌 트에 서비스 주체 개체를 만드는 Azure Portal를 사용 하 여 앱을 등록 합니다.In this section, you register your app using the Azure portal, which creates the service principal object in your Azure AD tenant. 이 예제에서는 클라이언트 암호 자격 증명을 지정 하지만, 포털은 X509 인증서 기반 자격 증명도 지원 합니다.In this example, you specify a client secret credential, but the portal also supports X509 certificate-based credentials.

  1. Azure 계정을 사용하여 Azure Portal에 로그인합니다.Sign in to the Azure portal using your Azure account.

  2. Azure Active Directory > 앱 등록 > 새 등록 을 선택합니다.Select Azure Active Directory > App registrations > New registration.

  3. 앱의 이름을 제공 합니다.Provide a name for the app.

  4. 적절 한 지원 되는 계정 유형을 선택 합니다.Select the appropriate Supported account types.

  5. URI 리디렉션 에서 을 앱 형식으로 선택 하 고 (선택 사항) 앱에 필요한 경우 리디렉션 URI를 지정 합니다 (선택 사항).Under Redirect URI, select Web as the app type, and (optionally) specify a redirect URI if your app requires it.

  6. 값을 설정한 후 등록 을 선택 합니다.After setting the values, select Register. 앱 등록이 만들어지고 개요 페이지가 표시 됩니다.The app registration is created and the Overview page displays.

  7. 앱 코드에서 사용할 응용 프로그램 ID 를 복사 합니다.Copy the Application ID for use in your app code. 이 값을 클라이언트 ID 라고도 합니다.This value is also referred to as the Client ID.

  8. 클라이언트 암호를 생성 하려면 인증서 & 암호 페이지를 선택 합니다.To generate a client secret, select the Certificates & secrets page. 새 클라이언트 비밀 을 선택합니다.Select New client secret.

  9. 암호에 대 한 설명만료 기간을 제공 합니다.Provide a description for the secret, and an expires duration.

  10. 완료되면 추가 를 선택합니다.When done, select Add.

  11. 비밀의 값이 표시 됩니다.The value of the secret displays. 나중에 검색할 수 없기 때문에이 값을 다른 위치에 복사 하 고 저장 합니다.Copy and save this value in another location, because you can't retrieve it later. 로그인을 위해 클라이언트 앱에서 응용 프로그램 ID를 사용 하 여 암호를 제공 합니다.You provide the secret with the Application ID in your client app for sign-in.

    클라이언트 암호에 저장 된 키

이제 역할 할당 으로 이동 하 여 앱 id에 대 한 역할 기반 액세스 제어를 설정 하는 방법을 알아봅니다.Now proceed to Assign a role to learn how to establish role-based access control for the app's identity.

AD FS app identity 관리Manage an AD FS app identity

Id 관리 서비스로 AD FS를 사용 하 Azure Stack 허브를 배포한 경우 PowerShell을 사용 하 여 앱의 id를 관리 해야 합니다.If you deployed Azure Stack Hub with AD FS as your identity management service, you must use PowerShell to manage your app's identity. 아래에는 X509 인증서와 클라이언트 암호를 모두 보여 주는 서비스 사용자 자격 증명을 관리 하는 예제가 나와 있습니다.Examples are provided below for managing service principal credentials, demonstrating both an X509 certificate and a client secret.

스크립트는 Azure Stack 허브 인스턴스에 대해 권한 있는 끝점을 호스트 하는 VM에 대 한 다른 세션을 여는 독립 된 PowerShell 콘솔 ("관리자 권한으로 실행")에서 실행 해야 합니다.The scripts must be run in an elevated ("Run as administrator") PowerShell console, which opens another session to a VM that hosts a privileged endpoint for your Azure Stack Hub instance. 권한 있는 끝점 세션이 설정 되 면 추가 cmdlet이 서비스 주체를 실행 하 고 관리 합니다.Once the privileged endpoint session has been established, additional cmdlets will execute and manage the service principal. 권한 있는 끝점에 대 한 자세한 내용은 Azure Stack 허브에서 권한 있는 끝점 사용을 참조 하세요.For more information about the privileged endpoint, see Using the privileged endpoint in Azure Stack Hub.

인증서 자격 증명을 사용 하는 서비스 주체 만들기Create a service principal that uses a certificate credential

인증서 자격 증명을 만들 때 다음 요구 사항을 충족 해야 합니다.When creating a certificate credential, the following requirements must be met:

  • 프로덕션의 경우 내부 인증 기관 또는 공용 인증 기관에서 인증서를 발급 해야 합니다.For production, the certificate must be issued from either an internal Certificate Authority or a Public Certificate Authority. 공용 인증 기관을 사용 하는 경우 Microsoft 신뢰할 수 있는 루트 인증 프로그램의 일부로 기본 운영 체제 이미지에 권한을 포함 해야 합니다.When using a public authority, you must include the authority in the base operating system image as part of the Microsoft Trusted Root Authority Program. Microsoft 신뢰할 수 있는 루트 인증서 프로그램: 참가자에서 전체 목록을 찾을 수 있습니다.You can find the full list at Microsoft Trusted Root Certificate Program: Participants. "자체 서명 된" 테스트 인증서를 만드는 예제는 나중에 인증서 자격 증명 업데이트중에도 표시 됩니다.An example of creating a "self-signed" test certificate will also be shown later during Update a certificate credential.
  • 암호화 공급자는 Microsoft 레거시 CSP (암호화 서비스 공급자) 키 공급자로 지정 해야 합니다.The cryptographic provider must be specified as a Microsoft legacy Cryptographic Service Provider (CSP) key provider.
  • 공개 키와 개인 키가 모두 필요 하므로 인증서 형식은 PFX 파일에 있어야 합니다.The certificate format must be in PFX file, as both the public and private keys are required. Windows 서버는 공개 키 파일 (TLS/SSL 인증서 파일) 및 연결 된 개인 키 파일을 포함 하는 .pfx 파일을 사용 합니다.Windows servers use .pfx files that contain the public key file (TLS/SSL certificate file) and the associated private key file.
  • Azure Stack 허브 인프라에는 인증서에 게시 된 인증 기관의 CRL (인증서 해지 목록) 위치에 대 한 네트워크 액세스 권한이 있어야 합니다.Your Azure Stack Hub infrastructure must have network access to the certificate authority's Certificate Revocation List (CRL) location published in the certificate. 이 CRL은 HTTP 끝점 이어야 합니다.This CRL must be an HTTP endpoint.

인증서가 있으면 아래 PowerShell 스크립트를 사용 하 여 앱을 등록 하 고 서비스 주체를 만듭니다.Once you have a certificate, use the PowerShell script below to register your app and create a service principal. 또한 서비스 주체를 사용 하 여 Azure에 로그인 합니다.You also use the service principal to sign in to Azure. 다음 자리 표시자에 대 한 고유한 값을 대체 합니다.Substitute your own values for the following placeholders:

자리 표시자Placeholder DescriptionDescription 예제Example
<PepVM> Azure Stack 허브 인스턴스의 권한 있는 끝점 VM 이름입니다.The name of the privileged endpoint VM on your Azure Stack Hub instance. "AzS-ERCS01""AzS-ERCS01"
<YourCertificateLocation> 로컬 인증서 저장소에 있는 X509 인증서의 위치입니다.The location of your X509 certificate in the local certificate store. "Cert: \ CurrentUser\My\AB5A8A3533CC7AA2025BF05120117E06DE407B34""Cert:\CurrentUser\My\AB5A8A3533CC7AA2025BF05120117E06DE407B34"
<YourAppName> 새 앱 등록에 대 한 설명이 포함 된 이름입니다.A descriptive name for the new app registration. "내 관리 도구""My management tool"
  1. 관리자 권한 Windows PowerShell 세션을 열고 다음 스크립트를 실행 합니다.Open an elevated Windows PowerShell session, and run the following script.

    # Sign in to PowerShell interactively, using credentials that have access to the VM running the Privileged Endpoint (typically <domain>\cloudadmin)
    $Creds = Get-Credential
    
    # Create a PSSession to the Privileged Endpoint VM
    $Session = New-PSSession -ComputerName "<PepVm>" -ConfigurationName PrivilegedEndpoint -Credential $Creds
    
    # Use the Get-Item cmdlet to retrieve your certificate.
    # If you don't want to use a managed certificate, you can produce a self signed cert for testing purposes: 
    # $Cert = New-SelfSignedCertificate -CertStoreLocation "cert:\CurrentUser\My" -Subject "CN=<YourAppName>" -KeySpec KeyExchange
    $Cert = Get-Item "<YourCertificateLocation>"
    
    # Use the privileged endpoint to create the new app registration (and service principal object)
    $SpObject = Invoke-Command -Session $Session -ScriptBlock {New-GraphApplication -Name "<YourAppName>" -ClientCertificates $using:cert}
    $AzureStackInfo = Invoke-Command -Session $Session -ScriptBlock {Get-AzureStackStampInformation}
    $Session | Remove-PSSession
    
    # Using the stamp info for your Azure Stack Hub instance, populate the following variables:
    # - Az endpoint used for Azure Resource Manager operations 
    # - Audience for acquiring an OAuth token used to access Graph API 
    # - GUID of the directory tenant
    $ArmEndpoint = $AzureStackInfo.TenantExternalEndpoints.TenantResourceManager
    $GraphAudience = "https://graph." + $AzureStackInfo.ExternalDomainFQDN + "/"
    $TenantID = $AzureStackInfo.AADTenantID
    
    # Register and set an Az environment that targets your Azure Stack Hub instance
    Add-AzEnvironment -Name "AzureStackUser" -ArmEndpoint $ArmEndpoint
    
    # Sign in using the new service principal
    $SpSignin = Connect-AzAccount -Environment "AzureStackUser" `
    -ServicePrincipal `
    -CertificateThumbprint $SpObject.Thumbprint `
    -ApplicationId $SpObject.ClientId `
    -TenantId $TenantID
    
    # Output the service principal details
    $SpObject
    
    
  2. 스크립트가 완료 되 면 서비스 주체의 자격 증명을 포함 하 여 앱 등록 정보를 표시 합니다.After the script finishes, it displays the app registration info, including the service principal's credentials. ClientID및는 Thumbprint 인증 되 고 나중에 Azure Resource Manager에서 관리 하는 리소스에 대 한 액세스 권한이 부여 됩니다.The ClientID and Thumbprint are authenticated, and later authorized for access to resources managed by Azure Resource Manager.

    ApplicationIdentifier : S-1-5-21-1512385356-3796245103-1243299919-1356
    ClientId              : 3c87e710-9f91-420b-b009-31fa9e430145
    Thumbprint            : 30202C11BE6864437B64CE36C8D988442082A0F1
    ApplicationName       : Azurestack-MyApp-c30febe7-1311-4fd8-9077-3d869db28342
    ClientSecret          :
    PSComputerName        : azs-ercs01
    RunspaceId            : a78c76bb-8cae-4db4-a45a-c1420613e01b
    

다음 섹션의 값을 사용 하 여 PowerShell 콘솔 세션을 열어 둡니다 ApplicationIdentifier .Keep your PowerShell console session open, as you use it with the ApplicationIdentifier value in the next section.

인증서 자격 증명 업데이트Update a certificate credential

이제 서비스 주체를 만들었으므로이 섹션에서는 다음을 수행 하는 방법을 보여 줍니다.Now that you created a service principal, this section will show you how to:

  1. 테스트용으로 자체 서명 된 새 X509 인증서를 만듭니다.Create a new self-signed X509 certificate for testing.
  2. 새 인증서와 일치 하도록 해당 손도장 (Thumbprint ) 속성을 업데이트 하 여 서비스 주체의 자격 증명을 업데이트 합니다.Update the service principal's credentials, by updating its Thumbprint property to match the new certificate.

PowerShell을 사용 하 여 인증서 자격 증명을 업데이트 하 고 다음 자리 표시자에 대 한 고유한 값을 대체 합니다.Update the certificate credential using PowerShell, substituting your own values for the following placeholders:

자리 표시자Placeholder DescriptionDescription 예제Example
<PepVM> Azure Stack 허브 인스턴스의 권한 있는 끝점 VM 이름입니다.The name of the privileged endpoint VM on your Azure Stack Hub instance. "AzS-ERCS01""AzS-ERCS01"
<YourAppName> 새 앱 등록에 대 한 설명이 포함 된 이름입니다.A descriptive name for the new app registration. "내 관리 도구""My management tool"
<YourCertificateLocation> 로컬 인증서 저장소에 있는 X509 인증서의 위치입니다.The location of your X509 certificate in the local certificate store. "Cert: \ CurrentUser\My\AB5A8A3533CC7AA2025BF05120117E06DE407B34""Cert:\CurrentUser\My\AB5A8A3533CC7AA2025BF05120117E06DE407B34"
<AppIdentifier> 응용 프로그램 등록에 할당 된 식별자입니다.The identifier assigned to the application registration. "S-1-5-21-1512385356-3796245103-1243299919-1356""S-1-5-21-1512385356-3796245103-1243299919-1356"
  1. 관리자 권한 Windows PowerShell 세션을 사용 하 여 다음 cmdlet을 실행 합니다.Using your elevated Windows PowerShell session, run the following cmdlets:

    # Create a PSSession to the PrivilegedEndpoint VM
    $Session = New-PSSession -ComputerName "<PepVM>" -ConfigurationName PrivilegedEndpoint -Credential $Creds
    
    # Create a self-signed certificate for testing purposes. 
    $NewCert = New-SelfSignedCertificate -CertStoreLocation "cert:\CurrentUser\My" -Subject "CN=<YourAppName>" -KeySpec KeyExchange
    # In production, use Get-Item and a managed certificate instead.
    # $Cert = Get-Item "<YourCertificateLocation>"
    
    # Use the privileged endpoint to update the certificate thumbprint, used by the service principal associated with <AppIdentifier>
    $SpObject = Invoke-Command -Session $Session -ScriptBlock {Set-GraphApplication -ApplicationIdentifier "<AppIdentifier>" -ClientCertificates $using:NewCert}
    $Session | Remove-PSSession
    
    # Output the updated service principal details
    $SpObject
    
  2. 스크립트가 완료 되 면 새 자체 서명 된 인증서의 지문 값을 포함 하 여 업데이트 된 앱 등록 정보를 표시 합니다.After the script finishes, it displays the updated app registration info, including the thumbprint value for the new self-signed certificate.

    ApplicationIdentifier : S-1-5-21-1512385356-3796245103-1243299919-1356
    ClientId              : 
    Thumbprint            : AF22EE716909041055A01FE6C6F5C5CDE78948E9
    ApplicationName       : Azurestack-MyApp-c30febe7-1311-4fd8-9077-3d869db28342
    ClientSecret          : 
    PSComputerName        : azs-ercs01
    RunspaceId            : a580f894-8f9b-40ee-aa10-77d4d142b4e5
    

클라이언트 암호 자격 증명을 사용 하는 서비스 주체 만들기Create a service principal that uses client secret credentials

경고

클라이언트 암호를 사용 하는 것은 X509 인증서 자격 증명을 사용 하는 것 보다 보안 수준이 낮습니다.Using a client secret is less secure than using an X509 certificate credential. 인증 메커니즘을 안전 하 게 보호 하는 것은 아니지만 일반적으로 클라이언트 앱 소스 코드에 암호를 포함 해야 합니다.Not only is the authentication mechanism less secure, but it also typically requires embedding the secret in the client app source code. 따라서 프로덕션 앱의 경우 인증서 자격 증명을 사용 하는 것이 좋습니다.As such, for production apps, you're strongly encouraged to use a certificate credential.

이제 다른 앱 등록을 만들지만 이번에는 클라이언트 암호 자격 증명을 지정 합니다.Now you create another app registration, but this time specify a client secret credential. 인증서 자격 증명과 달리 디렉터리에는 클라이언트 암호 자격 증명을 생성 하는 기능이 있습니다.Unlike a certificate credential, the directory has the ability to generate a client secret credential. 클라이언트 암호를 지정 하는 대신 스위치를 사용 하 여 -GenerateClientSecret 생성 되도록 요청 합니다.Instead of specifying the client secret, you use the -GenerateClientSecret switch to request that it be generated. 다음 자리 표시자에 대 한 고유한 값을 대체 합니다.Substitute your own values for the following placeholders:

자리 표시자Placeholder DescriptionDescription 예제Example
<PepVM> Azure Stack 허브 인스턴스의 권한 있는 끝점 VM 이름입니다.The name of the privileged endpoint VM on your Azure Stack Hub instance. "AzS-ERCS01""AzS-ERCS01"
<YourAppName> 새 앱 등록에 대 한 설명이 포함 된 이름입니다.A descriptive name for the new app registration. "내 관리 도구""My management tool"
  1. 관리자 권한 Windows PowerShell 세션을 열고 다음 cmdlet을 실행 합니다.Open an elevated Windows PowerShell session, and run the following cmdlets:

    # Sign in to PowerShell interactively, using credentials that have access to the VM running the Privileged Endpoint (typically <domain>\cloudadmin)
    $Creds = Get-Credential
    
    # Create a PSSession to the Privileged Endpoint VM
    $Session = New-PSSession -ComputerName "<PepVM>" -ConfigurationName PrivilegedEndpoint -Credential $Creds
    
    # Use the privileged endpoint to create the new app registration (and service principal object)
    $SpObject = Invoke-Command -Session $Session -ScriptBlock {New-GraphApplication -Name "<YourAppName>" -GenerateClientSecret}
    $AzureStackInfo = Invoke-Command -Session $Session -ScriptBlock {Get-AzureStackStampInformation}
    $Session | Remove-PSSession
    
    # Using the stamp info for your Azure Stack Hub instance, populate the following variables:
    # - Az endpoint used for Azure Resource Manager operations 
    # - Audience for acquiring an OAuth token used to access Graph API 
    # - GUID of the directory tenant
    $ArmEndpoint = $AzureStackInfo.TenantExternalEndpoints.TenantResourceManager
    $GraphAudience = "https://graph." + $AzureStackInfo.ExternalDomainFQDN + "/"
    $TenantID = $AzureStackInfo.AADTenantID
    
    # Register and set an Az environment that targets your Azure Stack Hub instance
    Add-AzEnvironment -Name "AzureStackUser" -ArmEndpoint $ArmEndpoint
    
    # Sign in using the new service principal
    $securePassword = $SpObject.ClientSecret | ConvertTo-SecureString -AsPlainText -Force
    $credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $SpObject.ClientId, $securePassword
    $SpSignin = Connect-AzAccount -Environment "AzureStackUser" -ServicePrincipal -Credential $credential -TenantId $TenantID
    
    # Output the service principal details
    $SpObject
    
  2. 스크립트가 완료 되 면 서비스 주체의 자격 증명을 포함 하 여 앱 등록 정보를 표시 합니다.After the script finishes, it displays the app registration info, including the service principal's credentials. ClientID및는 ClientSecret 인증 되 고 나중에 Azure Resource Manager에서 관리 하는 리소스에 대 한 액세스 권한이 부여 됩니다.The ClientID and ClientSecret are authenticated, and later authorized for access to resources managed by Azure Resource Manager.

    ApplicationIdentifier : S-1-5-21-1634563105-1224503876-2692824315-2623
    ClientId              : 8e0ffd12-26c8-4178-a74b-f26bd28db601
    Thumbprint            : 
    ApplicationName       : Azurestack-YourApp-6967581b-497e-4f5a-87b5-0c8d01a9f146
    ClientSecret          : 6RUWLRoBw3EebBLgaWGiowCkoko5_j_ujIPjA8dS
    PSComputerName        : azs-ercs01
    RunspaceId            : 286daaa1-c9a6-4176-a1a8-03f543f90998
    

다음 섹션의 값을 사용 하 여 PowerShell 콘솔 세션을 열어 둡니다 ApplicationIdentifier .Keep your PowerShell console session open, as you use it with the ApplicationIdentifier value in the next section.

클라이언트 암호 업데이트Update a client secret

클라이언트 암호를 즉시 변경 하는 ResetClientSecret 매개 변수를 사용 하 여 PowerShell을 사용 하 여 클라이언트 암호 자격 증명을 업데이트 합니다.Update the client secret credential using PowerShell, using the ResetClientSecret parameter, which immediately changes the client secret. 다음 자리 표시자에 대 한 고유한 값을 대체 합니다.Substitute your own values for the following placeholders:

자리 표시자Placeholder DescriptionDescription 예제Example
<PepVM> Azure Stack 허브 인스턴스의 권한 있는 끝점 VM 이름입니다.The name of the privileged endpoint VM on your Azure Stack Hub instance. "AzS-ERCS01""AzS-ERCS01"
<AppIdentifier> 응용 프로그램 등록에 할당 된 식별자입니다.The identifier assigned to the application registration. "S-1-5-21-1634563105-1224503876-2692824315-2623""S-1-5-21-1634563105-1224503876-2692824315-2623"
  1. 관리자 권한 Windows PowerShell 세션을 사용 하 여 다음 cmdlet을 실행 합니다.Using your elevated Windows PowerShell session, run the following cmdlets:

    # Create a PSSession to the PrivilegedEndpoint VM
    $Session = New-PSSession -ComputerName "<PepVM>" -ConfigurationName PrivilegedEndpoint -Credential $Creds
    
    # Use the privileged endpoint to update the client secret, used by the service principal associated with <AppIdentifier>
    $SpObject = Invoke-Command -Session $Session -ScriptBlock {Set-GraphApplication -ApplicationIdentifier "<AppIdentifier>" -ResetClientSecret}
    $Session | Remove-PSSession
    
    # Output the updated service principal details
    $SpObject
    
  2. 스크립트가 완료 되 면 새로 생성 된 클라이언트 암호를 포함 하 여 업데이트 된 앱 등록 정보를 표시 합니다.After the script finishes, it displays the updated app registration info, including the newly generated client secret.

    ApplicationIdentifier : S-1-5-21-1634563105-1224503876-2692824315-2623
    ClientId              : 8e0ffd12-26c8-4178-a74b-f26bd28db601
    Thumbprint            : 
    ApplicationName       : Azurestack-YourApp-6967581b-497e-4f5a-87b5-0c8d01a9f146
    ClientSecret          : MKUNzeL6PwmlhWdHB59c25WDDZlJ1A6IWzwgv_Kn
    PSComputerName        : azs-ercs01
    RunspaceId            : 6ed9f903-f1be-44e3-9fef-e7e0e3f48564
    

서비스 사용자 제거Remove a service principal

이제 PowerShell을 사용 하 여 디렉터리 및 연결 된 서비스 주체 개체에서 앱 등록을 제거/삭제 하는 방법을 알아봅니다.Now you'll see how to remove/delete an app registration from your directory, and its associated service principal object, using PowerShell.

다음 자리 표시자에 대 한 고유한 값을 대체 합니다.Substitute your own values for the following placeholders:

자리 표시자Placeholder DescriptionDescription 예제Example
<PepVM> Azure Stack 허브 인스턴스의 권한 있는 끝점 VM 이름입니다.The name of the privileged endpoint VM on your Azure Stack Hub instance. "AzS-ERCS01""AzS-ERCS01"
<AppIdentifier> 응용 프로그램 등록에 할당 된 식별자입니다.The identifier assigned to the application registration. "S-1-5-21-1634563105-1224503876-2692824315-2623""S-1-5-21-1634563105-1224503876-2692824315-2623"
# Sign in to PowerShell interactively, using credentials that have access to the VM running the Privileged Endpoint (typically <domain>\cloudadmin)
$Creds = Get-Credential

# Create a PSSession to the PrivilegedEndpoint VM
$Session = New-PSSession -ComputerName "<PepVM>" -ConfigurationName PrivilegedEndpoint -Credential $Creds

# OPTIONAL: Use the privileged endpoint to get a list of applications registered in AD FS
$AppList = Invoke-Command -Session $Session -ScriptBlock {Get-GraphApplication}

# Use the privileged endpoint to remove the application and associated service principal object for <AppIdentifier>
Invoke-Command -Session $Session -ScriptBlock {Remove-GraphApplication -ApplicationIdentifier "<AppIdentifier>"}

권한 있는 끝점에서 Remove-GraphApplication cmdlet을 호출 하 여 반환 된 출력은 없지만 cmdlet을 실행 하는 동안 콘솔에는 축 자 확인 출력이 표시 됩니다.There will be no output returned from calling the Remove-GraphApplication cmdlet on the privileged endpoint, but you'll see verbatim confirmation output to the console during execution of the cmdlet:

VERBOSE: Deleting graph application with identifier S-1-5-21-1634563105-1224503876-2692824315-2623.
VERBOSE: Remove-GraphApplication : BEGIN on AZS-ADFS01 on ADFSGraphEndpoint
VERBOSE: Application with identifier S-1-5-21-1634563105-1224503876-2692824315-2623 was deleted.
VERBOSE: Remove-GraphApplication : END on AZS-ADFS01 under ADFSGraphEndpoint configuration

역할 할당Assign a role

RBAC (Role-Based Access Control)를 통해 사용자 및 앱에의 한 Azure 리소스에 대 한 액세스 권한이 부여 됩니다.Access to Azure resources by users and apps is authorized through Role-Based Access Control (RBAC). 앱에서 구독의 리소스에 액세스할 수 있도록 하려면 해당 서비스 주체를 특정 리소스역할할당 해야 합니다.To allow an app to access resources in your subscription, you must assign its service principal to a role for a specific resource. 먼저 앱에 대 한 적절 한 사용 권한을 나타내는 역할을 결정 합니다.First decide which role represents the right permissions for the app. 사용 가능한 역할에 대해 알아보려면 Azure 리소스에 대 한 기본 제공 역할을 참조 하세요.To learn about the available roles, see Built-in roles for Azure resources.

선택한 리소스의 종류는 또한 앱에 대 한 액세스 범위 를 설정 합니다.The type of resource you choose also establishes the access scope for the app. 구독, 리소스 그룹 또는 리소스 수준에서 액세스 범위를 설정할 수 있습니다.You can set the access scope at the subscription, resource group, or resource level. 권한은 하위 수준의 범위로 상속됩니다.Permissions are inherited to lower levels of scope. 예를 들어 리소스 그룹에 대 한 "읽기 권한자" 역할에 앱을 추가 하는 것은 리소스 그룹 및 리소스 그룹에 포함 된 모든 리소스를 읽을 수 있음을 의미 합니다.For example, adding an app to the "Reader" role for a resource group, means it can read the resource group and any resources it contains.

  1. Azure Stack 허브를 설치 하는 동안 지정한 디렉터리 (예: Azure AD의 Azure Portal 또는 AD FS에 대 한 Azure Stack 허브 사용자 포털)에 따라 적절 한 포털에 로그인 합니다.Sign in to the appropriate portal, based on the directory you specified during Azure Stack Hub installation (the Azure portal for Azure AD, or the Azure Stack Hub user portal for AD FS, for example). 이 예제에서는 Azure Stack 허브 사용자 포털에 로그인 한 사용자를 표시 합니다.In this example, we show a user signed in to the Azure Stack Hub user portal.

    참고

    지정 된 리소스에 대 한 역할 할당을 추가 하려면 사용자 계정이 사용 권한을 선언 하는 역할에 속해야 합니다 Microsoft.Authorization/roleAssignments/write .To add role assignments for a given resource, your user account must belong to a role that declares the Microsoft.Authorization/roleAssignments/write permission. 예를 들어 소유자 또는 사용자 액세스 관리자 기본 제공 역할이 있습니다.For example, either the Owner or User Access Administrator built-in roles.

  2. 앱에서 액세스할 수 있도록 허용할 리소스로 이동 합니다.Navigate to the resource you wish to allow the app to access. 이 예제에서는 구독을 선택 하 고 특정 구독을 선택 하 여 구독 범위에서 앱의 서비스 주체를 역할에 할당 합니다.In this example, assign the app's service principal to a role at the subscription scope, by selecting Subscriptions, then a specific subscription. 대신 리소스 그룹 또는 특정 리소스 (예: 가상 머신)를 선택할 수 있습니다.You could instead select a resource group, or a specific resource like a virtual machine.

    할당을 위한 구독 선택

  3. RBAC를 지 원하는 모든 리소스에서 universal 인 Access Control (IAM) 페이지를 선택 합니다.Select the Access Control (IAM) page, which is universal across all resources that support RBAC.

  4. + 추가 를 선택합니다.Select + Add

  5. 역할 아래에서 앱에 할당 하려는 역할을 선택 합니다.Under Role, pick the role you wish to assign to the app.

  6. 선택 에서 전체 또는 부분 응용 프로그램 이름을 사용 하 여 앱을 검색 합니다.Under Select, search for your app using a full or partial Application Name. 등록 하는 동안 응용 프로그램 이름은 Azurestack- <YourAppName> - <ClientId> 로 생성 됩니다.During registration, the Application Name is generated as Azurestack-<YourAppName>-<ClientId>. 예를 들어 App2 의 응용 프로그램 이름을 사용 하 고 ClientId 2bbe67d8-3fdb-4b62-87cf-cc41dd4344ff 를 만드는 동안 할당 한 경우 전체 이름은 azurestack-App2-2bbe67d8-3fdb-4b62-87cf-cc41dd4344ff 입니다.For example, if you used an application name of App2, and ClientId 2bbe67d8-3fdb-4b62-87cf-cc41dd4344ff was assigned during creation, the full name would be Azurestack-App2-2bbe67d8-3fdb-4b62-87cf-cc41dd4344ff. 정확한 문자열 또는 azurestack 또는 Azurestack-App2 와 같은 부분을 검색할 수 있습니다.You can search for either the exact string, or a portion, like Azurestack or Azurestack-App2.

  7. 앱을 찾았으면 선택 된 멤버 아래에 해당 앱이 표시 됩니다.Once you find the app, select it and it will show under Selected members.

  8. 저장 을 선택하여 역할 할당을 완료합니다.Select Save to finish assigning the role.

    역할 할당Assign role

  9. 완료 되 면 앱은 지정 된 역할에 대해 현재 범위에 할당 된 보안 주체 목록에 표시 됩니다.When finished, the app will show in the list of principals assigned for the current scope, for the given role.

    할당 된 역할Assigned role

앱에 id를 지정 하 고 리소스 액세스 권한을 부여 했으므로 스크립트 또는 코드를 사용 하도록 설정 하 여 허브 리소스 Azure Stack에 로그인 하 고 안전 하 게 액세스할 수 있습니다.Now that you've given your app an identity and authorized it for resource access, you can enable your script or code to sign in and securely access Azure Stack Hub resources.

다음 단계Next steps

사용자 권한 관리Manage user permissions
Azure Active Directory 설명서Azure Active Directory Documentation
Active Directory Federation ServicesActive Directory Federation Services