Skip to content

Commit 811cd71

Browse files
Merge pull request #111540 from hansenms/personal/hansenms/revert-rbac
Revert "Merge pull request #107790
2 parents fa1859d + ed1499f commit 811cd71

17 files changed

+68
-167
lines changed

.openpublishing.redirection.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51114,6 +51114,16 @@
5111451114
"source_path": "articles/security/fundamentals/database-best-practices.md",
5111551115
"redirect_url": "/azure/sql-database/sql-database-security-best-practice",
5111651116
"redirect_document_id": false
51117+
},
51118+
{
51119+
"source_path": "articles/healthcare-apis/configure-azure-rbac.md",
51120+
"redirect_url": "/azure/healthcare-apis/azure-api-for-fhir-additional-settings",
51121+
"redirect_document_id": false
51122+
},
51123+
{
51124+
"source_path": "articles/healthcare-apis/configure-local-rbac.md",
51125+
"redirect_url": "/azure/healthcare-apis/azure-api-for-fhir-additional-settings",
51126+
"redirect_document_id": false
5111751127
}
5111851128
]
5111951129
}

articles/healthcare-apis/TOC.yml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,7 @@
5757
expanded: false
5858
items:
5959
- name: Configure additional Azure API for FHIR settings
60-
href: azure-api-for-fhir-additional-settings.md
61-
- name: Configure Azure RBAC
62-
href: configure-azure-rbac.md
63-
- name: Configure Local RBAC
64-
href: configure-local-rbac.md
60+
href: azure-api-for-fhir-additional-settings.md
6561
- name: Configure database settings
6662
href: configure-database.md
6763
- name: Configure CORS

articles/healthcare-apis/access-fhir-postman-tutorial.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ ms.date: 02/07/2019
1313

1414
# Access Azure API for FHIR with Postman
1515

16-
A client application would access an FHIR API through a [REST API](https://www.hl7.org/fhir/http.html). You may also want to interact directly with the FHIR server as you build applications, for example, for debugging purposes. In this tutorial, we will walk through the steps needed to use [Postman](https://www.getpostman.com/) to access a FHIR server. Postman is a tool often used for debugging when building applications that access APIs.
16+
A client application would access an FHIR API through a [REST API](https://www.hl7.org/fhir/http.html). You may also want to interact directly with the FHIR server as you build applications, for example, for debugging purposes. In this tutorial, we will walk through the steps needed to use [Postman](https://www.getpostman.com/) to access an FHIR server. Postman is a tool often used for debugging when building applications that access APIs.
1717

1818
## Prerequisites
1919

@@ -103,9 +103,9 @@ If you inspect the access token with a tool like [https://jwt.ms](https://jwt.ms
103103
}
104104
```
105105

106-
In troubleshooting situations, validating that you have the correct audience (`aud` claim) is a good place to start. If your token is from the correct issuer (`iss` claim) and has the correct audience (`aud` claim), but you are still unable to access the FHIR API, it is likely that the user or service principal (`oid` claim) does not have access to the FHIR data plane. We recommend you [use Azure Role Based Access Control](configure-azure-rbac.md) to assign data plane roles to users. If you are using an external, secondary Azure Active directory tenant for your data plane, you will need to [configure local RBAC assignments](configure-local-rbac.md).
106+
In troubleshooting situations, validating that you have the correct audience (`aud` claim) is a good place to start. The managed Azure API for FHIR uses [identity object IDs](find-identity-object-ids.md) to restrict access to the service. Make sure that `oid` claim of the token contains an object ID from the list of allowed object IDs.
107107

108-
It is also possible to [get a token for the Azure API for FHIR using the Azure CLI](get-healthcare-apis-access-token-cli.md). If you are using a token obtained with the Azure CLI, you should use Authorization type "Bearer Token" and paste the token in directly.
108+
It is also possible to [get a token for the Azure API for FHIR using the Azure CLI](get-healthcare-apis-access-token-cli.md).
109109

110110
## Inserting a patient
111111

articles/healthcare-apis/azure-ad-hcapi-token-validation.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,9 @@ Once the server has verified the authenticity of the token, the FHIR server will
9999
When using the Azure API for FHIR, the server will validate:
100100

101101
1. The token has the right `Audience` (`aud` claim).
102-
1. The user or principal that the token was issued for is allowed to access the FHIR server data plane. The `oid` claim of the token contains an identity object ID, which uniquely identifies the user or principal.
102+
1. The `oid` claim contains an identity object ID, which is in the list of allowed object IDs.
103103

104-
We recommend that the FHIR service be [configured to use Azure RBAC](configure-azure-rbac.md) to manage data plane role assignments. But you can also [configure local RBAC](configure-local-rbac.md) if your FHIR service uses an external or secondary Azure Active Directory tenant.
104+
See details on [finding identity object IDs](find-identity-object-ids.md).
105105

106106
When using the OSS Microsoft FHIR server for Azure, the server will validate:
107107

articles/healthcare-apis/azure-api-for-fhir-additional-settings.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,10 @@ Throughput must be provisioned to ensure that sufficient system resources are av
2222

2323
For more information on how to change the default settings, see [configure database settings](configure-database.md).
2424

25-
## Access control
25+
## Find identity object IDs
26+
The fully managed Azure API for FHIR service is configured to allow access for only a pre-defined list of identity object IDs. When an application or user is trying to access the FHIR API, a bearer token must be presented. This bearer token will have certain claims (fields). In order to grant access to the FHIR API, the token must contain the right issuer (`iss`), audience (`aud`), and an object ID (`oid`) from a list of allowed object IDs. An identity object ID is either the object ID of a user or a service principal in Azure Active Directory.
2627

27-
The Azure API for FHIR will only allow authorized users to access the FHIR API. You can configure authorized users through two different mechanisms. The primary and recommended way to configure access control is using [Azure Role Based Access Control (RBAC)](https://docs.microsoft.com/azure/role-based-access-control/), which is accessible through the **Access control (IAM)** blade. Azure RBAC only works if you want to secure data plane access using the Azure Active Directory tenant associated with your subscription. If you wish to use a different tenant, the Azure API for FHIR offers a local FHIR data plane access control mechanism. The configuration options are not as rich when using the local RBAC mechanism. For details, choose one of the following options:
28-
29-
* [Azure RBAC for FHIR data plane](configure-azure-rbac.md). This is the preferred option when you are using the Azure Active Directory tenant associated with your subscription.
30-
* [Local FHIR data plane access control](configure-local-rbac.md). Use this option only when you need to use an external Azure Active Directory tenant for data plane access control.
28+
When you create a new Azure API for FHIR instance, you can configure a list of allowed object IDs. To configure this list, see our how-to-guide to [find identity object IDs](find-identity-object-ids.md).
3129

3230
## Enable diagnostic logging
3331
You may want to enable diagnostic logging as part of your setup to be able to monitor your service and have accurate reporting for compliance purposes. For details on how to set up diagnostic logging, see our [how-to-guide](enable-diagnostic-logging.md) on how to set up diagnostic logging, along with some sample queries.

articles/healthcare-apis/configure-azure-rbac.md

Lines changed: 0 additions & 54 deletions
This file was deleted.

articles/healthcare-apis/configure-local-rbac.md

Lines changed: 0 additions & 66 deletions
This file was deleted.

articles/healthcare-apis/fhir-paas-cli-quickstart.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,15 @@ Get a list of commands for HealthcareAPIs:
3030
az healthcareapis --help
3131
```
3232

33+
## Locate your identity object ID
34+
35+
Object ID values are guids that correspond to the object IDs of specific Azure Active Directory users or service principals in the directory associated with the subscription. If you would like to know the object ID of a specific user, you can find it with a command like:
36+
37+
```azurecli-interactive
38+
az ad user show --id [email protected] | jq -r .objectId
39+
```
40+
Read the how-to guide on [finding identity object IDs](find-identity-object-ids.md) for more details.
41+
3342
## Create Azure Resource Group
3443

3544
Pick a name for the resource group that will contain the Azure API for FHIR and create it:
@@ -41,9 +50,11 @@ az group create --name "myResourceGroup" --location westus2
4150
## Deploy the Azure API for FHIR
4251

4352
```azurecli-interactive
44-
az healthcareapis create --resource-group myResourceGroup --name nameoffhiraccount --kind fhir-r4 --location westus2
53+
az healthcareapis create --resource-group myResourceGroup --name nameoffhiraccount --kind fhir-r4 --location westus2 --access-policies-object-id "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
4554
```
4655

56+
where `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` is the identity object ID for a user or service principal that you would like to have access to the FHIR API.
57+
4758
## Fetch FHIR API capability statement
4859

4960
Obtain a capability statement from the FHIR API with:

articles/healthcare-apis/fhir-paas-portal-quickstart.md

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ author: hansenms
66
ms.service: healthcare-apis
77
ms.subservice: fhir
88
ms.topic: quickstart
9-
ms.date: 03/15/2020
9+
ms.date: 02/07/2019
1010
ms.author: mihansen
1111
---
1212

@@ -26,31 +26,34 @@ Open the [Azure portal](https://portal.azure.com) and click **Create a resource*
2626

2727
You can find Azure API for FHIR by typing "FHIR" into the search box:
2828

29-
:::image type="content" source="media/quickstart-paas-portal/portal-search-healthcare-apis.png" alt-text="Search for Healthcare APIs":::
29+
![Search for Healthcare APIs](media/quickstart-paas-portal/portal-search-healthcare-apis.png)
3030

3131
## Create Azure API for FHIR account
3232

3333
Select **Create** to create a new Azure API for FHIR account:
3434

35-
:::image type="content" source="media/quickstart-paas-portal/portal-create-healthcare-apis.png" alt-text="Create Azure API for FHIR account":::
35+
![Create Azure API for FHIR account](media/quickstart-paas-portal/portal-create-healthcare-apis.png)
3636

3737
## Enter account details
3838

3939
Select an existing resource group or create a new one, choose a name for the account, and finally click **Review + create**:
4040

41-
:::image type="content" source="media/quickstart-paas-portal/portal-new-healthcareapi-details.png" alt-text="New healthcare api details":::
41+
![New healthcare api details](media/quickstart-paas-portal/portal-new-healthcareapi-details.png)
4242

4343
Confirm creation and await FHIR API deployment.
4444

45-
## Additional settings (optional)
45+
## Additional settings
4646

47-
You can also click **Next: Additional settings** to view the authentication settings. The default configuration for the Azure API for FHIR is to [use Azure RBAC for assigning data plane roles](configure-azure-rbac.md). When configured in this mode, the "Authority" for the FHIR service will be set to the Azure Active Directory tenant of the subscription:
47+
Click **Next: Additional settings** to configure the authority, audience, identity object IDs that should be allowed to access this Azure API for FHIR, enable SMART on FHIR if needed, and configure database throughput:
4848

49-
:::image type="content" source="media/rbac/confirm-azure-rbac-mode-create.png" alt-text="Default Authentication settings":::
49+
- **Authority:** You can specify different Azure AD tenant from the one that you are logged into as authentication authority for the service.
50+
- **Audience:** Best practice, and the default setting, is that the audience is set to the URL of the FHIR server. You can change that here. The audience identifies the recipient that the token is intended for. In this context, it should be set to something representing the FHIR API itself.
51+
- **Allowed object IDs:** You can specify identity object IDs that should be allowed to access this Azure API for FHIR. You can learn more on finding the object ID for users and service principals in the [Find identity object IDs](find-identity-object-ids.md) how-to guide.
52+
- **Smart On FHIR proxy:** You can enable SMART on FHIR proxy. For details on how to configure SMART on FHIR proxy see tutorial [Azure API for FHIR SMART on FHIR proxy](https://docs.microsoft.com/azure/healthcare-apis/use-smart-on-fhir-proxy)
53+
- **Provisioned throughput (RU/s):** Here you can specify throughput settings for the underlying database for your Azure API for FHIR. You can change this setting later in the Database blade. For more details, please see the [configure database settings](configure-database.md) page.
5054

51-
Notice that the box for entering allowed object IDs is grayed out, since we use Azure RBAC for configuring role assignments in this case.
5255

53-
If you wish to configure the FHIR service to use an external or secondary Azure Active Directory tenant, you can change the Authority and enter object IDs for user and groups that should be allowed access to the server. For more information, see the [local RBAC configuration](configure-local-rbac.md) guide.
56+
![Configure allowed object IDs](media/quickstart-paas-portal/configure-audience.png)
5457

5558
## Fetch FHIR API capability statement
5659

0 commit comments

Comments
 (0)