Microsoft Azure
Connect Microsoft Azure to Jutsu. Jutsu signs in to Azure as an app you register, lists the subscriptions that app can see, checks on each one whether it holds the Reader and Security Reader roles, and shows you the health of the connection and exactly which role is missing where. The connection is read-only: it can never change anything in Azure.
This is the first step of the Azure integration. Read What this connection does today below before you set it up, so you know what to expect.
| Time | About 10 minutes |
|---|---|
| You need in Jutsu | The Owner or Admin role in your Jutsu organization |
| You need in Azure | Permission to register applications in Microsoft Entra ID, and permission to assign roles on each subscription you want Jutsu to read (for example Owner or User Access Administrator on the subscription) |
| You will copy | Three values from Azure: the Directory (tenant) ID, the Application (client) ID, and a client secret's Value |
Jutsu connects with a client secret. You register an app in Azure, give it two read-only roles on each subscription, make a secret for it, and paste three values into Jutsu. Jutsu stores the secret encrypted and uses it only to read.
What this connection does today
Once connected, Jutsu:
- Signs in to Azure with the app's client secret.
- Lists the subscriptions the app can see.
- Checks on each subscription whether the app holds Reader and Security Reader.
- Shows whether the connection is healthy and, for every subscription, which role is missing. Check again reads Azure again. There is no scheduled check yet, so select it after any change in Azure.
- Lets you choose which subscriptions to read, and replace the secret before it expires.
It does not do these yet:
- Check your Azure settings against your compliance tasks.
- Import Microsoft Defender for Cloud findings.
- Collect Azure activity logs.
- Connect without a secret. The Without a secret option appears in the dialog but is switched off, and says Not available in this environment yet.
The connection page shows these as "coming soon" and reports only whether the role each one will need is in place. Entra ID sign-in and audit logs don't come from this connection. They come from the separate Microsoft 365 integration.
The two roles
Jutsu asks for two built-in Azure roles, and only on the subscriptions you choose, never on your whole directory.
| Role | Role ID | Lets Jutsu | Can't |
|---|---|---|---|
| Reader | acdd72a7-3385-48ef-bd42-f606fba81ae7 | See which resources you have and how each one is set up | Change anything, or read what is stored inside your storage, databases, or secret stores |
| Security Reader | 39bc4728-0917-49c7-9d2c-d95423bc2eb4 | Needed to bring in what Microsoft Defender for Cloud reports, once that import arrives | Change a policy or dismiss a finding |
Without Reader, Jutsu can't read a subscription at all. Without Security Reader, Jutsu can still read the subscription, and only the Defender for Cloud import will need it later.
Set up Azure
There are two ways to do the Azure side. Pick one.
- The Azure portal, click by click. Best if you want to see each setting.
- Azure Cloud Shell, one pasted script. Best if you'd rather copy than click.
Both end with the same three values. You can also start the Jutsu dialog first (Part 2 below), because it shows the same instructions and the same script. Keep it open in one tab and use Azure in another.
Option A - The Azure portal
Step 1 - Register an app
Sign in to the Azure portal and open Microsoft Entra ID, then App registrations, then New registration.
- Name: anything recognisable, such as Jutsu read-only.
- Supported account types: choose Single tenant (Accounts in this organizational directory only).
- Leave Redirect URI empty.
Select Register.
Step 2 - Copy the two IDs
The app's Overview page opens. Copy these two values and keep them for Step 6:
- Directory (tenant) ID
- Application (client) ID
Step 3 - Make a client secret
On the app, open Certificates & secrets, then Client secrets, then New client secret. Give it a description such as Jutsu, choose how long it lasts, and select Add.
Azure now shows the secret with two columns, Value and Secret ID. Copy the Value, not the Secret ID.
Copy the Value now: Azure shows the Value only once, right after the secret is made. Once you leave the page, it is masked for good, and you have to make a new secret. The Secret ID is a short ID that looks like 0a1b2c3d-…. The Value is the long text. Jutsu catches a pasted Secret ID and tells you.
Pick a long life, and write the date down: Azure stops accepting a secret on the date it expires, and until you replace it Jutsu can't read your subscriptions. Choose the longest life your policy allows and put the expiry date in your calendar.
Step 4 - Give the app Reader on a subscription
Open Subscriptions in the portal and select the subscription you want Jutsu to read. Open Access control (IAM), select Add, then Add role assignment.
- On the Role tab, search for Reader, select it, and select Next.
- On the Members tab, leave Assign access to on User, group, or service principal, select Select members, search for the app by the name you gave it, select it, and select Select.
- Select Review + assign, then Review + assign again.
Step 5 - Give it Security Reader on the same subscription
Repeat Step 4 on the same subscription, this time choosing Security Reader as the role.
Do Steps 4 and 5 for each subscription you want Jutsu to read. You can add more subscriptions later, from Jutsu's connection page.
Where the role goes: Assign the roles on each subscription, not on a management group or your whole directory. Jutsu's dialog states it the same way: the roles apply on each subscription you choose, not on your whole directory.
Option B - Azure Cloud Shell
The script makes the app, makes a secret, gives the app Reader on one subscription, adds Security Reader on the same subscription, and prints the three values to paste into Jutsu. It runs on your default subscription. To use another one, run az account set --subscription "<name>" first.
Step 1 - Open Cloud Shell
Open shell.azure.com and sign in. If Azure asks which shell to use, pick Bash.
First time in Cloud Shell? Azure asks you to set up storage. Choose No storage account required, and leave Use an existing private virtual network unticked. If you tick it, Azure asks for a virtual network and the shell won't start until you fill it in.
Step 2 - Paste the script
Paste this into the Cloud Shell terminal and press Enter. It is the same script the Jutsu dialog shows under Rather use the command line?
# Runs on your default subscription. For another one, first run: az account set --subscription "<name>"
SUB=$(az account show --query id -o tsv)
# Make the app and a secret, with Reader on the subscription
OUT=$(az ad sp create-for-rbac --name "Jutsu read-only" --years 1 --role "Reader" --scopes "/subscriptions/$SUB" -o json)
APP=$(echo "$OUT" | jq -r .appId)
# Add Security Reader on the same subscription
az role assignment create --assignee "$APP" --role "Security Reader" --scope "/subscriptions/$SUB"
# The three values to paste into Jutsu
echo "$OUT" | jq '{tenantId: .tenant, clientId: .appId, clientSecret: .password}'
Step 3 - Copy the three values
The last command prints a small block of JSON:
tenantIdis the Directory (tenant) ID.clientIdis the Application (client) ID.clientSecretis the secret's Value.
Copy all three. The secret is shown here once and it lasts one year (--years 1), so note the date.
Need more subscriptions? The script covers one subscription. For each extra one, run the two az role assignment create lines with --scope /subscriptions/<subscription-id>. The connection page also prints these commands for any subscription that is missing a role.
Connect it in Jutsu
Step 1 - Open Integrations
Go to app.jutsu.ai and select Integrations in the left navigation. It sits under More. The Data Sources tab opens by default.
Step 2 - Select the Microsoft Azure card
In the Cloud section, select the Microsoft Azure card. The Connect Microsoft Azure dialog opens, with five steps across the top: How, Azure, Details, Subscriptions, Done.
The card doesn't open? Adding integrations needs the Owner or Admin role in your Jutsu organization. For Analysts, Responders, and Viewers the catalog is read-only.
Step 3 - How
Keep With a secret (Quickest. Paste a secret from Azure.). Without a secret is greyed out. Select Continue.
Step 4 - Azure
Choose how to set up Azure:
- Azure Cloud Shell (recommended). Three steps: Open Cloud Shell, paste the script (it has a Copy button), and copy the three values it prints. The dialog shows which printed value goes in which field:
tenantIdin Directory (tenant) ID,clientIdin Application (client) ID,clientSecretin Secret value. This is Option B above. - Azure portal. Three steps, each with a button that opens the right Azure page: Register an app, Add a client secret, and Give it two roles on each subscription, with Reader and Security Reader ready to copy. This is Option A above.
Exactly what the two roles allow opens the role table above, with each role's ID.
If you haven't done the Azure side yet, do it now. Then select Continue.
Step 5 - Details
Fill in the form:
- Name: something that identifies the connection, such as Acme Azure Production.
- Directory (tenant) ID: from the app's Overview page.
- Application (client) ID: from the app's Overview page.
- Secret value: the secret's Value, not the Secret ID. Jutsu stores it encrypted and uses it only to read.
Select Test connection. Jutsu asks Azure which subscriptions the app can see. Nothing is stored yet.
If the form says That is not the right shape. Copy it straight from the Overview page., an ID has a typo or an extra character. If it says This looks like the Secret ID. Paste the Value beside it., go back to Azure and copy the Value column instead.
Step 6 - Subscriptions
Jutsu shows Azure showed N subscriptions and lists every one the app can see, each with a status:
| Status | Meaning | Can you tick it? |
|---|---|---|
| Ready | Both roles are in place | Yes, ticked by default |
| Needs Security Reader | Jutsu can read the subscription. Security Reader is missing, and the Defender for Cloud import will need it when it arrives | Yes, ticked by default |
| Needs Reader | Without Reader, Jutsu can't read this subscription at all | No |
| Needs both roles | Jutsu can't read this subscription yet | No |
| Turned off in Azure | Azure doesn't allow reading a subscription that is turned off | No |
Only a subscription Jutsu can read can be ticked, so a missing Reader or a turned-off subscription blocks the tick. A missing Security Reader doesn't, because Jutsu can still read the settings.
A subscription that isn't ready has a How to give it the role section with the exact az role assignment create command, and an access page link that opens the subscription's Access control (IAM) in Azure. Add the role, come back, and select Check again. Jutsu reads Azure again and ticks the subscriptions that became ready.
Tick the subscriptions Jutsu should read, then select Connect. The button counts them, such as Connect 3 subscriptions. You can choose up to 200.
Step 7 - Done
The dialog says Connected. and offers Open connection. Jutsu checks the chosen subscriptions as part of connecting, so the connection page shows the result straight away. After that it checks only when you select Check again.
Find the connection
Jutsu adds the connection to Connections, under Cloud. If the first check could not finish while you connected, the page says Jutsu is checking Azure for the first time. This takes a few minutes. and its status shows Checking. Select Check again to finish it.
Verify the connection
Open the connection. Its Overview tab starts with one sentence and the time of the last check.
- Azure is working. Jutsu can read all N subscriptions. Everything is in place.
- Azure is working, but the Security Reader role is missing on N subscriptions. Jutsu reads them. Add the role when you want the Defender import to be ready for them.
- Jutsu cannot read N of M subscriptions. A Reader role is missing, or a subscription is turned off. The Subscriptions list says which.
The status at the top of the page is Working, Needs attention, Cannot sign in, or Checking. Select Check again after any change in Azure.
Under Subscriptions, each row shows Working, or what is wrong (Needs Reader, Needs Security Reader, Needs both roles, Turned off in Azure), with the command that fixes it. A row can also say Not checked yet, or Azure error if Azure didn't let Jutsu read it just then, which Check again retries.
What Jutsu does here has two rows. Neither runs yet. Each shows only whether the role it will need is in place:
| Row | Role it needs | Status labels |
|---|---|---|
| Check your settings | Reader | Role in place, Role on some, Needs a role, Stopped, Waiting for the first check |
| Bring in Defender findings | Security Reader | The same labels |
Open Configure → Settings for the technical facts: How Jutsu signs in, Subscriptions chosen, the Directory (tenant) ID, the Application (client) ID, and Secret, which reads Stored encrypted since the date you connected. Jutsu never shows the secret again.
What healthy looks like
| Status | Working |
|---|---|
| Sentence | Azure is working. Jutsu can read all N subscriptions. |
| Subscriptions | Every row shows Working |
| Check your settings | Role in place |
| Bring in Defender findings | Role in place |
| Secret | Stored encrypted since the date you connected |
No events, and that's expected: This connection doesn't send events to Jutsu yet, so there are no Azure alerts and the Events tab is not shown. The connection is how Jutsu proves it can read your subscriptions.
Change what Jutsu reads
Choose subscriptions
On the connection, select Choose subscriptions (on the Overview tab, or under Configure → Settings). Jutsu reads Azure for the current list, and you tick or untick subscriptions. Jutsu reads the ticked ones when it checks access. Unticking one stops that. Select Save.
This is also how you add a subscription later. Give the app Reader and Security Reader on it in Azure, then tick it here.
Replace the secret
Replace the secret before it expires, or when it was pasted wrong. In Azure, open the app, then Certificates & secrets, then New client secret, and copy the Value. In Jutsu, open Configure → Settings and select Replace secret, paste it into Secret value, and select Replace secret. Jutsu tries the new secret before it replaces the old one, so a wrong paste leaves the working secret in place.
Replacing the secret, choosing subscriptions, and Check again all need the Owner or Admin role. Others see the connection and are told to ask an admin.
Troubleshooting
| Message or symptom | What to do |
|---|---|
| The card doesn't open | You need the Owner or Admin role in the Jutsu organization. |
| Azure does not know that app in that directory. | The directory and the app have to belong together. One of the two IDs is from somewhere else, or has a typo. Open the app in Azure, copy both values from its Overview page again, paste them, and test. |
| Azure did not accept that secret. | Usually the Secret ID was pasted in place of the Value. Azure shows the Value only once, so make a new secret, copy its Value, and paste it. On an existing connection, use Replace secret. |
| That secret has expired. | Azure stopped accepting the secret on its expiry date. Make a new secret and use Replace secret. Jutsu can't read your subscriptions until you do. |
| Jutsu signed in, but the app cannot see any subscription. | The app has no role anywhere yet. Give it Reader and Security Reader on each subscription, then select Test again (or Check again on a saved connection). |
| A subscription shows Needs Reader, Needs Security Reader, or Needs both roles | A role is missing on that subscription. Use the command under How to give it the role, or add it on the subscription's Access control (IAM) page. Then select Check again. |
| A subscription shows Turned off in Azure | Azure doesn't allow reading a subscription that is disabled or deleted. Turn it back on in Azure, or leave it unticked. |
| A subscription can't be ticked | Jutsu can only read a subscription that has Reader and isn't turned off. Fix the role, then Check again. |
| Azure did not answer. | Usually brief, and nothing is wrong with your settings. Wait a minute and try again. A saved connection keeps what Jutsu saw before. |
| Something went wrong on our side. | Nothing is wrong with your Azure settings. Use the technical details in the message and send them to Jutsu support. |
| The status is Cannot sign in after working before | The most common cause is an expired secret. Read the message on the page and use Replace secret. |
| Compliance is paused on this connection. or Compliance is read-only after a plan change. | The connection and its settings stay. It carries on when compliance resumes or your plan includes it again. |
| Not available in this environment yet. on Without a secret | Connecting without a secret isn't available yet. Use With a secret. |
Security and access
- Jutsu only reads. Reader and Security Reader can't change a resource, a policy, or a finding, and can't read what is stored inside your storage, databases, or secret stores.
- The roles are on the subscriptions you choose, not on your directory. Remove them from a subscription and Jutsu loses access to it at once.
- The secret is encrypted at rest and is sent to Jutsu once, when you connect or replace it. It is never shown again.
- Use a dedicated app for Jutsu, as in the steps above, so you can revoke it without touching anything else.
- Secrets expire. Put the expiry date in your calendar and replace the secret before then.
Remove the connection
Removing it takes two parts: archive or delete the connection in Jutsu, then remove Jutsu's access in Azure. Archiving doesn't touch your Azure account.
- In Jutsu, open the connection and go to the Danger zone. Archive stops the checks and can be undone. Delete removes the connection for good.
- In Azure, remove the app's access. Delete the app's secret, or delete the app under App registrations. If you want to keep the app, remove its Reader and Security Reader assignments under each subscription's Access control (IAM).