|
| 1 | +[[ms-graph-authz]] |
| 2 | +=== Microsoft Graph Authz |
| 3 | + |
| 4 | +The Microsoft Graph Authz plugin uses https://learn.microsoft.com/en-us/graph/api/user-list-memberof[Microsoft Graph] to look up group membership information from Microsoft Entra ID. |
| 5 | + |
| 6 | +This is primarily intended to work around the Microsoft Entra ID maximum group size limit (see https://learn.microsoft.com/en-us/security/zero-trust/develop/configure-tokens-group-claims-app-roles#group-overages[Group overages]). |
| 7 | + |
| 8 | +:plugin_name: microsoft-graph-authz |
| 9 | +include::install_remove.asciidoc[] |
| 10 | + |
| 11 | +[[configure-azure]] |
| 12 | +==== Configure Azure |
| 13 | + |
| 14 | +To make API calls to Microsoft Graph, Elasticsearch requires Azure credentials with the correct permissions. |
| 15 | + |
| 16 | +[discrete] |
| 17 | +==== Create a custom Azure Application |
| 18 | + |
| 19 | +. Log in to the https://portal.azure.com[Azure portal] and go to Microsoft Entra ID |
| 20 | +. Click "Enterprise applications" and then "New application" to register a new application. |
| 21 | +. Click "Create your own application", provide a name, and select the "Integrate any other application you don’t find in the gallery" option. |
| 22 | + |
| 23 | +image::images/01-create-enterprise-application.png["create your own application" page] |
| 24 | + |
| 25 | +[discrete] |
| 26 | +==== Configure the custom Application |
| 27 | + |
| 28 | +. In the https://portal.azure.com[Azure portal], go to Microsoft Entra ID. |
| 29 | +. Under “App registrations”, then the “All applications” tab, find the application created in the previous section. |
| 30 | ++ |
| 31 | +image::images/02-find-app-registration.png[find your app registration] |
| 32 | +. Take note of the Application (client) ID and Tenant ID shown here - these will be needed to configure Elasticsearch later. |
| 33 | ++ |
| 34 | +image::images/03-get-application-id.png[get your application ID] |
| 35 | +. Under Manage > Certificates & secrets |
| 36 | + - Create a new client secret |
| 37 | + - Take note of the Value - this is needed later, and is only shown once |
| 38 | ++ |
| 39 | +image::images/04-create-client-secret.png[get your client secret] |
| 40 | +. Under Manage > API permissions |
| 41 | + - Go to “Add a permission” |
| 42 | + - Choose “Microsoft Graph” |
| 43 | + - Choose “Application permissions” |
| 44 | + - Select “Directory.ReadWrite.All, Group.ReadWrite.All, User.Read.All” |
| 45 | + - Note that an Azure Admin will need to approve these permissions before the credentials can be used |
| 46 | ++ |
| 47 | +image::images/05-configure-api-permissions.png[configure api permissions] |
| 48 | + |
| 49 | +==== Configuration properties |
| 50 | + |
| 51 | +Once the plugin is installed, the following configuration settings are available: |
| 52 | + |
| 53 | +xpack.security.authc.realms.microsoft_graph.*.order:: |
| 54 | + The priority of the realm within the realm chain. Realms with a lower order are consulted first. The value must be unique for each realm. This setting is required. |
| 55 | + |
| 56 | +xpack.security.authc.realms.microsoft_graph.*.tenant_id:: |
| 57 | + Your Microsoft Entra ID https://learn.microsoft.com/en-us/entra/fundamentals/how-to-find-tenant[Tenant ID]. This setting is required. |
| 58 | + |
| 59 | +xpack.security.authc.realms.microsoft_graph.*.client_id:: |
| 60 | + The Application ID of the Enterprise Application you registered in the previous section. This setting is required. |
| 61 | + |
| 62 | +xpack.security.authc.realms.microsoft_graph.*.client_secret:: |
| 63 | + The client secret value for the Application you registered in the previous section. This is a sensitive setting, and must be configured in the Elasticsearch keystore. This setting is required. |
| 64 | + |
| 65 | +xpack.security.authc.realms.microsoft_graph.*.access_token_host:: |
| 66 | + A Microsoft login URL. Defaults to `https://login.microsoftonline.com`. |
| 67 | + |
| 68 | +xpack.security.authc.realms.microsoft_graph.*.graph_host:: |
| 69 | + The Microsoft Graph base address. Defaults to `https://graph.microsoft.com/v1.0`. |
| 70 | + |
| 71 | +xpack.security.authc.realms.microsoft_graph.*.http_request_timeout:: |
| 72 | + The timeout for individual Graph HTTP requests. Defaults to `10s`. |
| 73 | + |
| 74 | +xpack.security.authc.realms.microsoft_graph.*.execution_timeout:: |
| 75 | + The overall timeout for authorization requests to this plugin. Defaults to `30s`. |
| 76 | + |
| 77 | +Create a Microsoft Graph realm, following the above settings, then configure an existing realm to delegate to it using `authorization_realms`. |
| 78 | + |
| 79 | +For example, to authenticate via Microsoft Entra with SAML and use the Microsoft Graph plugin to look up group membership: |
| 80 | + |
| 81 | +[source,yaml] |
| 82 | +---- |
| 83 | +xpack.security.authc.realms.saml.kibana-realm: |
| 84 | + order: 2 |
| 85 | + attributes.principal: nameid |
| 86 | + attributes.groups: "http://schemas.microsoft.com/ws/2008/06/identity/claims/groups" |
| 87 | + idp.metadata.path: "https://login.microsoftonline.com/<Tenant ID>/federationmetadata/2007-06/federationmetadata.xml?appid=<Application_ID>" |
| 88 | + idp.entity_id: "https://sts.windows.net/<Tenant_ID>/" |
| 89 | + sp.entity_id: "<Kibana_Endpoint_URL>" |
| 90 | + sp.acs: "<Kibana_Endpoint_URL>/api/security/saml/callback" |
| 91 | + sp.logout: "<Kibana_Endpoint_URL>/logout" |
| 92 | + authorization_realms: microsoft_graph1 |
| 93 | +
|
| 94 | +xpack.security.authc.realms.microsoft_graph.microsoft_graph1: |
| 95 | + order: 3 |
| 96 | + tenant_id: "<Tenant_ID>" |
| 97 | + client_id: "<Graph_Application_ID>" |
| 98 | +---- |
0 commit comments