기존 서비스 주체 가져오기

서비스 주체 나열

사용하려는 기존 서비스 주체가 이미 있는 경우 이 단계에서는 기존 서비스 주체를 검색하는 방법을 설명합니다.

테넌트의 서비스 주체 목록은 az ad sp list를 사용하여 검색할 수 있습니다. 기본적으로 이 명령은 테넌트에 대한 처음 100개의 서비스 주체를 반환합니다. 테넌트의 서비스 주체를 모두 가져오려면 --all 매개 변수를 사용합니다. 이 목록을 가져오는 데 시간이 오래 걸릴 수 있으므로 다음 매개 변수 중 하나를 사용하여 목록을 필터링하는 것이 좋습니다.

  • --display-name은 제공된 이름과 일치하는 접두사가 있는 서비스 주체를 요청합니다. 서비스 주체의 표시 이름은 만드는 동안 매개 변수로 --name 설정된 값입니다. 서비스 주체를 만드는 동안 설정 --name 하지 않은 경우 이름 접두사는 다음과 입니다 azure-cli-.
  • --spn 는 정확한 서비스 주체 이름 일치를 필터링합니다. 서비스 주체 이름은 항상 .로 https://시작합니다. 사용한 --name 값이 URI가 아니면 이 값 https:// 뒤에 표시 이름이 잇습니다.
  • --show-mine 는 로그인한 사용자가 만든 서비스 주체만 요청합니다.
  • --filter는 OData 필터를 사용하고 서버 쪽 필터링을 수행합니다. 이 메서드는 CLI의 --query 매개 변수를 사용하는 클라이언트 쪽 필터링보다 먼저 추천됩니다. OData 필터에 대한 자세한 내용은 필터에 대한 OData 식 구문을 참조 하세요.

서비스 주체 개체에 대해 반환되는 정보는 자세한 정보입니다. 로그인에 필요한 정보만 얻으려면 쿼리 문자열 [].{id:appId, tenant:appOwnerOrganizationId}을 사용합니다. 다음은 현재 로그인한 사용자가 만든 모든 서비스 주체에 대한 로그인 정보를 가져오는 예제입니다.

az ad sp list --show-mine --query "[].{SPname:displayName, SPid:appId, tenant:appOwnerOrganizationId}" --output table

서비스 주체가 많은 대규모 조직에서 작업하는 경우 다음 명령 예제를 사용해 보세요.

# get service principals containing a keyword
az ad sp list --display-name mySearchWord --output table

# get service principals using an OData filter
az ad sp list --filter "displayname eq 'myExactServicePrincipalName'" --output json

# get a service principal having a certain servicePrincipalNames property value
az ad sp list --spn https://spURL.com

Important

az ad sp list 및 az ad sp show를 사용하여 사용자와 테넌트를 모두 검색할 수 있지만 인증 비밀 또는 인증 방법은 사용할 수 없습니다. Azure Key Vault의 인증서에 대한 비밀은 az keyvault secret show를 사용하여 검색할 수 있지만 다른 비밀은 기본적으로 저장되지 않습니다. 인증 방법 또는 비밀을 잊어버린 경우 서비스 주체 자격 증명을 다시 설정합니다.

서비스 주체 속성

사용하여 az ad sp list서비스 주체 목록을 가져오는 경우 스크립트에서 참조할 수 있는 많은 출력 속성이 있습니다.

[
  {
    "accountEnabled": true,
    "addIns": [],
    "alternativeNames": [],
    "appDescription": null,
    "appDisplayName": "myServicePrincipalName",
    "appId": "00000000-0000-0000-0000-000000000000",
    "appOwnerOrganizationId": "00000000-0000-0000-0000-000000000000",
    "appRoleAssignmentRequired": false,
    "appRoles": [],
    "applicationTemplateId": null,
    "createdDateTime": null,
    "deletedDateTime": null,
    "description": null,
    "disabledByMicrosoftStatus": null,
    "displayName": "myServicePrincipalName",
    "homepage": "https://myURL.com",
    "id": "00000000-0000-0000-0000-000000000000",
    "info": {
      "logoUrl": null,
      "marketingUrl": null,
      "privacyStatementUrl": null,
      "supportUrl": null,
      "termsOfServiceUrl": null
    },
    "keyCredentials": [],
    "loginUrl": null,
    "logoutUrl": null,
    "notes": null,
    "notificationEmailAddresses": [],
    "oauth2PermissionScopes": [
      {
        "adminConsentDescription": "my admin description",
        "adminConsentDisplayName": "my admin display name",
        "id": "00000000-0000-0000-0000-000000000000",
        "isEnabled": true,
        "type": "User",
        "userConsentDescription": "my user description",
        "userConsentDisplayName": "my user display name",
        "value": "user_impersonation"
      }
    ],
    "passwordCredentials": [],
    "preferredSingleSignOnMode": null,
    "preferredTokenSigningKeyThumbprint": null,
    "replyUrls": [],
    "resourceSpecificApplicationPermissions": [],
    "samlSingleSignOnSettings": null,
    "servicePrincipalNames": [
      "00000000-0000-0000-0000-000000000000",
      "https://myURL.com"
    ],
    "servicePrincipalType": "Application",
    "signInAudience": null,
    "tags": [
      "WindowsAzureActiveDirectoryIntegratedApp"
    ],
    "tokenEncryptionKeyId": null,
    "verifiedPublisher": {
      "addedDateTime": null,
      "displayName": null,
      "verifiedPublisherId": null
    }
  }
]

매개 변수를 --query 사용하여 서비스 주체 속성을 검색하고 변수에 저장합니다.

# Bash script
spID=$(az ad sp list --display-name myServicePrincipalName --query "[].{spID:appId}" --output tsv)
tenantID=$(az ad sp list --display-name myServicePrincipalName --query "[].{tenant:appOwnerOrganizationId}" --output tsv)
userConsentDescr=$(az ad sp list --display-name myServicePrincipalName --query "[].{ucs:oauth2PermissionScopes.userConsentDescription[0]}" --output tsv)
echo "Using appId $spID in tenant $tenantID for $userConsentDescr"

다음 단계

기존 서비스 주체를 검색하는 방법을 알아보았으므로 다음 단계를 진행하여 서비스 주체 역할을 관리하는 방법을 알아봅니다.