Bird
Raised Fist0
Azurecloud~10 mins

Service principals for applications in Azure - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a service principal using Azure CLI.

Azure
az ad sp create-for-rbac --name [1]
Drag options to blanks, or click blank then click option'
A"MyAppSP"
B"MyApp"
C"ServicePrincipal"
D"AppService"
Attempts:
3 left
💡 Hint
Common Mistakes
Using a generic name that does not identify the service principal.
Omitting quotes around the name.
2fill in blank
medium

Complete the code to assign the 'Contributor' role to the service principal.

Azure
az role assignment create --assignee [1] --role Contributor --scope /subscriptions/00000000-0000-0000-0000-000000000000
Drag options to blanks, or click blank then click option'
A"Contributor"
B"<appId>"
C"<objectId>"
D"MyAppSP"
Attempts:
3 left
💡 Hint
Common Mistakes
Using the service principal name instead of appId.
Using the role name as assignee.
3fill in blank
hard

Fix the error in the command to list service principals filtered by display name.

Azure
az ad sp list --filter "displayName eq '[1]'"
Drag options to blanks, or click blank then click option'
Amyappsp
BMyApp
CMyAppSP
Dmyapp
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase letters when the name is case-sensitive.
Using partial names that do not match exactly.
4fill in blank
hard

Fill both blanks to create a service principal and output its appId and password.

Azure
sp=$(az ad sp create-for-rbac --name [1] --query [2] -o json)
echo $sp
Drag options to blanks, or click blank then click option'
A"MyAppSP"
B[appId, password]
C[appId, secret]
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect field names in the query.
Using the wrong service principal name.
5fill in blank
hard

Fill all three blanks to assign a role to a service principal with a specific scope and output the assignment ID.

Azure
assignment=$(az role assignment create --assignee [1] --role [2] --scope [3] --query id -o tsv)
echo $assignment
Drag options to blanks, or click blank then click option'
A"<appId>"
B"Contributor"
C"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup"
D"Reader"
Attempts:
3 left
💡 Hint
Common Mistakes
Using the wrong role name.
Using subscription scope instead of resource group scope.
Using service principal name instead of appId.

Practice

(1/5)
1. What is the main purpose of a service principal in Azure?
easy
A. To allow applications to access Azure resources securely without user accounts
B. To create user accounts for Azure administrators
C. To monitor network traffic in Azure
D. To store data in Azure Blob Storage

Solution

  1. Step 1: Understand service principal role

    A service principal acts like an identity for an application to access Azure resources securely.
  2. Step 2: Compare options

    Only To allow applications to access Azure resources securely without user accounts describes this purpose correctly; others describe unrelated Azure features.
  3. Final Answer:

    To allow applications to access Azure resources securely without user accounts -> Option A
  4. Quick Check:

    Service principal = app identity for secure access [OK]
Hint: Service principals are app identities, not user accounts [OK]
Common Mistakes:
  • Confusing service principals with user accounts
  • Thinking service principals manage storage or network
  • Assuming service principals are for monitoring
2. Which Azure CLI command correctly creates a service principal with contributor role for a specific resource group?
easy
A. az ad sp create --name MyApp --role reader --scopes /subscriptions/123/resourceGroups/MyGroup
B. az sp create --name MyApp --role contributor --scope /resourceGroups/MyGroup
C. az ad create-sp --name MyApp --role admin --scope /subscriptions/123/resourceGroups/MyGroup
D. az ad sp create-for-rbac --name MyApp --role contributor --scopes /subscriptions/123/resourceGroups/MyGroup

Solution

  1. Step 1: Identify correct Azure CLI syntax

    The correct command to create a service principal is 'az ad sp create-for-rbac' with parameters for name, role, and scopes.
  2. Step 2: Validate options

    az ad sp create-for-rbac --name MyApp --role contributor --scopes /subscriptions/123/resourceGroups/MyGroup uses correct command and parameters. Others have wrong commands, roles, or parameter names.
  3. Final Answer:

    az ad sp create-for-rbac --name MyApp --role contributor --scopes /subscriptions/123/resourceGroups/MyGroup -> Option D
  4. Quick Check:

    Correct CLI command = az ad sp create-for-rbac --name MyApp --role contributor --scopes /subscriptions/123/resourceGroups/MyGroup [OK]
Hint: Use 'az ad sp create-for-rbac' with correct role and scope [OK]
Common Mistakes:
  • Using wrong command like 'az sp create'
  • Misspelling 'scopes' or 'scope'
  • Assigning incorrect roles like 'admin' or 'reader'
3. Given this Azure CLI output after creating a service principal:
{
  "appId": "abcd-1234",
  "displayName": "MyApp",
  "password": "secret",
  "tenant": "tenant-5678"
}

What does the appId represent?
medium
A. The password to access the service principal
B. The unique identifier for the service principal application
C. The tenant ID where the service principal is created
D. The display name of the Azure subscription

Solution

  1. Step 1: Understand Azure CLI output fields

    The 'appId' is the unique ID for the service principal's application identity.
  2. Step 2: Match fields to meanings

    'password' is the secret, 'tenant' is the Azure tenant ID, 'displayName' is the name shown.
  3. Final Answer:

    The unique identifier for the service principal application -> Option B
  4. Quick Check:

    appId = service principal unique ID [OK]
Hint: appId is the app's unique ID, not password or tenant [OK]
Common Mistakes:
  • Confusing appId with password or tenant
  • Thinking appId is subscription name
  • Mixing displayName with appId
4. You run this command to create a service principal:
az ad sp create-for-rbac --name MyApp --role contributor --scopes /subscriptions/123/resourceGroups/MyGroup

But you get an error: Insufficient privileges to complete the operation.
What is the most likely cause?
medium
A. The role 'contributor' does not exist
B. The resource group name is incorrect
C. Your user account lacks permission to create service principals
D. The Azure CLI is not installed

Solution

  1. Step 1: Analyze error message

    'Insufficient privileges' means the user does not have rights to create service principals.
  2. Step 2: Check other options

    Resource group name errors or missing CLI cause different errors; 'contributor' is a valid role.
  3. Final Answer:

    Your user account lacks permission to create service principals -> Option C
  4. Quick Check:

    Permission error = user lacks rights [OK]
Hint: Check user permissions if 'Insufficient privileges' error appears [OK]
Common Mistakes:
  • Assuming resource group name typo causes privilege error
  • Thinking role name is invalid
  • Ignoring user permission requirements
5. You want to create a service principal that can only read data from a storage account named mystorage in resource group MyGroup. Which Azure CLI command correctly limits permissions to just that storage account?
hard
A. az ad sp create-for-rbac --name MyApp --role Storage Blob Data Reader --scopes /subscriptions/123/resourceGroups/MyGroup/providers/Microsoft.Storage/storageAccounts/mystorage
B. az ad sp create-for-rbac --name MyApp --role contributor --scopes /subscriptions/123/resourceGroups/MyGroup
C. az ad sp create-for-rbac --name MyApp --role reader --scopes /subscriptions/123
D. az ad sp create-for-rbac --name MyApp --role Storage Account Contributor --scopes /subscriptions/123/resourceGroups/MyGroup/providers/Microsoft.Storage/storageAccounts/mystorage

Solution

  1. Step 1: Identify required permission and scope

    To allow only read access to blobs, use role 'Storage Blob Data Reader' scoped to the specific storage account.
  2. Step 2: Evaluate options

    az ad sp create-for-rbac --name MyApp --role Storage Blob Data Reader --scopes /subscriptions/123/resourceGroups/MyGroup/providers/Microsoft.Storage/storageAccounts/mystorage uses correct role and precise scope. az ad sp create-for-rbac --name MyApp --role contributor --scopes /subscriptions/123/resourceGroups/MyGroup is too broad (contributor on resource group). az ad sp create-for-rbac --name MyApp --role reader --scopes /subscriptions/123 scopes too wide with reader role. az ad sp create-for-rbac --name MyApp --role Storage Account Contributor --scopes /subscriptions/123/resourceGroups/MyGroup/providers/Microsoft.Storage/storageAccounts/mystorage grants more permissions than needed.
  3. Final Answer:

    az ad sp create-for-rbac --name MyApp --role Storage Blob Data Reader --scopes /subscriptions/123/resourceGroups/MyGroup/providers/Microsoft.Storage/storageAccounts/mystorage -> Option A
  4. Quick Check:

    Least privilege with correct role and scope = az ad sp create-for-rbac --name MyApp --role Storage Blob Data Reader --scopes /subscriptions/123/resourceGroups/MyGroup/providers/Microsoft.Storage/storageAccounts/mystorage [OK]
Hint: Use least privilege role scoped to exact resource [OK]
Common Mistakes:
  • Using broad roles like contributor unnecessarily
  • Scoping to resource group instead of specific storage account
  • Choosing roles that allow write or delete permissions
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard