Overview
The Cloud Healthcare API uses Identity and Access Management (IAM) for access control.
In the Cloud Healthcare API, access control can be configured at the project, dataset, or data store level. For example, you can grant access to all datasets within a project to a group of developers. To learn how to set up and use IAM with the Cloud Healthcare API, see Controlling access and Controlling access to other products.
For a detailed description of IAM and its features, see the IAM documentation. In particular, see the section on managing IAM policies.
Every Cloud Healthcare API method requires the caller to have the necessary permissions. See Permissions and Roles for more information.
Permissions
The following tables list the IAM permissions that are associated with the
Cloud Healthcare API. Method names are shortened in the table;
each method's full name begins with projects.locations..
Consent store methods
| Consent store method | Required permissions | 
|---|---|
| datasets.consentStores.checkDataAccess | healthcare.consentStores.checkDataAccesson the requested consent store. | 
| datasets.consentStores.create | healthcare.consentStores.createon the parent dataset. | 
| datasets.consentStores.delete | healthcare.consentStores.deleteon the requested consent store. | 
| datasets.consentStores.evaluateUserConsents | healthcare.consentStores.evaluateUserConsentson the requested consent store. | 
| datasets.consentStores.get | healthcare.consentStores.geton the requested consent store. | 
| datasets.consentStores.getIamPolicy | healthcare.consentStores.getIamPolicyon the requested consent store. | 
| datasets.consentStores.list | healthcare.consentStores.liston the parent dataset. | 
| datasets.consentStores.patch | healthcare.consentStores.updateon the requested consent store. | 
| datasets.consentStores.queryAccessibleData | healthcare.consentStores.queryAccessibleDataon the requested consent store. | 
| datasets.consentStores.setIamPolicy | healthcare.consentStores.setIamPolicyon the requested consent store. | 
| datasets.consentStores.attributeDefinitions.create | healthcare.attributeDefinitions.createon the parent consent store. | 
| datasets.consentStores.attributeDefinitions.delete | healthcare.attributeDefinitions.deleteon the requested attribute definition resource. | 
| datasets.consentStores.attributeDefinitions.get | healthcare.attributeDefinitions.geton the requested attribute definition resource. | 
| datasets.consentStores.attributeDefinitions.list | healthcare.attributeDefinitions.liston the parent consent store. | 
| datasets.consentStores.attributeDefinitions.patch | healthcare.attributeDefinitions.updateon the requested attribute definition resource. | 
| datasets.consentStores.consentArtifacts.create | healthcare.consentArtifacts.createon the parent consent store. | 
| datasets.consentStores.consentArtifacts.delete | healthcare.consentArtifacts.deleteon the requested consent artifact resource. | 
| datasets.consentStores.consentArtifacts.get | healthcare.consentArtifacts.geton the requested consent artifact resource. | 
| datasets.consentStores.consentArtifacts.list | healthcare.consentArtifacts.liston the parent consent store. | 
| datasets.consentStores.consents.create | healthcare.consents.createon the parent consent store. | 
| datasets.consentStores.consents.delete | healthcare.consents.deleteon the requested consent resource. | 
| datasets.consentStores.consents.get | healthcare.consents.geton the requested consent resource. | 
| datasets.consentStores.consents.list | healthcare.consents.liston the parent consent store. | 
| datasets.consentStores.consents.patch | healthcare.consents.updateon the requested consent resource. | 
| datasets.consentStores.consents.revoke | healthcare.consents.revokeon the requested consent resource. | 
| datasets.consentStores.userDataMappings.archive | healthcare.userDataMappings.archiveon the requested user data mapping resource. | 
| datasets.consentStores.userDataMappings.create | healthcare.userDataMappings.createon the parent consent store. | 
| datasets.consentStores.userDataMappings.delete | healthcare.userDataMappings.deleteon the requested user data mapping resource. | 
| datasets.consentStores.userDataMappings.get | healthcare.userDataMappings.geton the requested user data mapping resource. | 
| datasets.consentStores.userDataMappings.list | healthcare.userDataMappings.liston the parent consent store. | 
| datasets.consentStores.userDataMappings.patch | healthcare.userDataMappings.updateon the requested user data mapping resource. | 
Dataset methods
| Datasets method | Required permissions | 
|---|---|
| datasets.create | healthcare.datasets.createon the parent Google Cloud project. | 
| datasets.deidentify | 
 | 
| datasets.delete | healthcare.datasets.deleteon the requested dataset. | 
| datasets.get | healthcare.datasets.geton the requested dataset. | 
| datasets.getIamPolicy | healthcare.datasets.getIamPolicyon the requested dataset. | 
| datasets.list | healthcare.datasets.liston the parent Google Cloud project. | 
| datasets.patch | healthcare.datasets.updateon the requested dataset. | 
| datasets.setIAMPolicy | healthcare.datasets.setIamPolicyon the requested dataset. | 
DICOM store methods
| DICOM store method | Required permissions | 
|---|---|
| datasets.dicomStores.create | healthcare.dicomStores.createon the parent dataset. | 
| datasets.dicomStores.deidentify | 
 | 
| datasets.dicomStores.delete | healthcare.dicomStores.deleteon the requested DICOM store. | 
| datasets.dicomStores.export | 
 | 
| datasets.dicomStores.get | healthcare.dicomStores.geton the requested DICOM store. | 
| datasets.dicomStores.getIamPolicy | healthcare.dicomStores.getIamPolicyon the requested DICOM store. | 
| datasets.dicomStores.import | 
 | 
| datasets.dicomStores.list | healthcare.dicomStores.liston the parent dataset. | 
| datasets.dicomStores.patch | healthcare.dicomStores.updateon the requested DICOM store. | 
| datasets.dicomStores.searchForInstances | healthcare.dicomStores.dicomWebReadon the requested DICOM store. | 
| datasets.dicomStores.searchForSeries | healthcare.dicomStores.dicomWebReadon the requested DICOM store. | 
| datasets.dicomStores.searchForStudies | healthcare.dicomStores.dicomWebReadon the requested DICOM store. | 
| datasets.dicomStores.setIamPolicy | healthcare.dicomStores.setIamPolicyon the requested DICOM store. | 
| datasets.dicomStores.storeInstances | healthcare.dicomStores.dicomWebWriteon the requested DICOM store. | 
| datasets.dicomStores.studies.delete | healthcare.dicomStores.dicomWebDeleteon the requested DICOM store. | 
| datasets.dicomStores.studies.retrieveMetadata | healthcare.dicomStores.dicomWebReadon the requested DICOM store. | 
| datasets.dicomStores.studies.retrieveStudy | healthcare.dicomStores.dicomWebReadon the requested DICOM store. | 
| datasets.dicomStores.studies.searchForInstances | healthcare.dicomStores.dicomWebReadon the requested DICOM store. | 
| datasets.dicomStores.studies.searchForSeries | healthcare.dicomStores.dicomWebReadon the requested DICOM store. | 
| datasets.dicomStores.studies.storeInstances | healthcare.dicomStores.dicomWebWriteon the requested DICOM store. | 
| datasets.dicomStores.studies.updateInstances | healthcare.dicomStores.dicomWebUpdateon the requested DICOM store. | 
| datasets.dicomStores.studies.updateMetadata | healthcare.dicomStores.dicomWebUpdateon the requested DICOM store. | 
| datasets.dicomStores.studies.series.delete | healthcare.dicomStores.dicomWebDeleteon the requested DICOM store. | 
| datasets.dicomStores.studies.series.retrieveMetadata | healthcare.dicomStores.dicomWebReadon the requested DICOM store. | 
| datasets.dicomStores.studies.series.retrieveSeries | healthcare.dicomStores.dicomWebReadon the requested DICOM store. | 
| datasets.dicomStores.studies.series.searchForInstances | healthcare.dicomStores.dicomWebReadon the requested DICOM store. | 
| datasets.dicomStores.studies.series.updateMetadata | healthcare.dicomStores.dicomWebUpdateon the requested DICOM store. | 
| datasets.dicomStores.studies.series.instances.delete | healthcare.dicomStores.dicomWebDeleteon the requested DICOM store. | 
| datasets.dicomStores.studies.series.instances.retrieveInstance | healthcare.dicomStores.dicomWebReadon the requested DICOM store. | 
| datasets.dicomStores.studies.series.instances.retrieveMetadata | healthcare.dicomStores.dicomWebReadon the requested DICOM store. | 
| datasets.dicomStores.studies.series.instances.retrieveRendered | healthcare.dicomStores.dicomWebReadon the requested DICOM store. | 
| datasets.dicomStores.studies.series.instances.updateMetadata | healthcare.dicomStores.dicomWebUpdateon the requested DICOM store. | 
| datasets.dicomStores.studies.series.instances.frames.retrieveFrames | healthcare.dicomStores.dicomWebReadon the requested DICOM store. | 
| datasets.dicomStores.studies.series.instances.frames.retrieveRendered | healthcare.dicomStores.dicomWebReadon the requested DICOM store. | 
| datasets.dicomStores.studies.series.instances.bulkdata.retrieveBulkdata | healthcare.dicomStores.dicomWebReadon the requested DICOM store. | 
FHIR store methods
| FHIR store method | Required permissions | 
|---|---|
| datasets.fhirStores.applyConsents | healthcare.fhirStores.applyConsentson the requested FHIR store resource. | 
| datasets.fhirStores.applyAdminConsents | healthcare.fhirStores.applyConsentson the requested FHIR store resource. | 
| datasets.fhirStores.configureSearch | healthcare.fhirStores.configureSearchon the requested FHIR store. | 
| datasets.fhirStores.create | healthcare.fhirStores.createon the parent dataset. | 
| datasets.fhirStores.deidentify | 
 | 
| datasets.fhirStores.delete | healthcare.fhirStores.deleteon the requested FHIR store. | 
| datasets.fhirStores.explainDataAccess | healthcare.fhirStores.explainDataAccesson the requested FHIR store resource. | 
| datasets.fhirStores.export | 
 | 
| datasets.fhirStores.get | healthcare.fhirStores.geton the requested FHIR store. | 
| datasets.fhirStores.getFHIRStoreMetrics | healthcare.fhirStores.geton the requested FHIR store. | 
| datasets.fhirStores.getIamPolicy | healthcare.fhirStores.getIamPolicyon the requested FHIR store. | 
| datasets.fhirStores.import | 
 | 
| datasets.fhirStores.list | healthcare.fhirStores.liston the parent dataset. | 
| datasets.fhirStores.patch | healthcare.fhirStores.updateon the requested FHIR store. | 
| datasets.fhirStores.rollback | healthcare.fhirStores.rollbackon the requested FHIR store. | 
| datasets.fhirStores.setIamPolicy | healthcare.fhirStores.setIamPolicyon the requested FHIR store. | 
| datasets.fhirStores.fhir.Encounter-everything | healthcare.fhirResources.geton each resource returned. | 
| datasets.fhirStores.fhir.Observation-lastn | healthcare.fhirStores.searchResourceson the parent FHIR store. | 
| datasets.fhirStores.fhir.Patient-everything | healthcare.fhirResources.geton each resource returned. | 
| datasets.fhirStores.fhir.Resource-purge | healthcare.fhirResources.purgeon the requested FHIR store resource. | 
| datasets.fhirStores.fhir.capabilities | healthcare.fhirStores.geton the requested FHIR store. | 
| datasets.fhirStores.fhir.conditionalDelete | 
 | 
| datasets.fhirStores.fhir.conditionalPatch | 
 | 
| datasets.fhirStores.fhir.conditionalUpdate | 
 | 
| datasets.fhirStores.fhir.create | 
 | 
| datasets.fhirStores.fhir.delete | healthcare.fhirResources.deleteon the requested FHIR store resource. | 
| datasets.fhirStores.fhir.executeBundle | healthcare.fhirResources.executeBundleon the requested FHIR store, and additional permissions (such ashealthcare.fhirResources.createandhealthcare.fhirResources.update) corresponding to individual operations within the bundle. If the API caller hashealthcare.fhirResources.createpermissions but nothealthcare.fhirResources.updatepermissions, the caller can only execute bundles containinghealthcare.fhirResources.createoperations. | 
| datasets.fhirStores.fhir.history | healthcare.fhirResources.geton the requested FHIR store resource and each of its versions. | 
| datasets.fhirStores.fhir.patch | healthcare.fhirResources.patchon the requested FHIR store resource. | 
| datasets.fhirStores.fhir.read | healthcare.fhirResources.geton the requested FHIR store resource. | 
| datasets.fhirStores.fhir.search | healthcare.fhirStores.searchResourceson the parent FHIR store. | 
| datasets.fhirStores.fhir.update | healthcare.fhirResources.updateon the requested FHIR store resource. | 
| datasets.fhirStores.fhir.vread | healthcare.fhirResources.geton the requested FHIR store resource version. | 
| datasets.fhirStores.fhir.Patient-consent-enforcement-status | healthcare.fhirResources.geton the requested FHIR store patient resource. | 
| datasets.fhirStores.fhir.Consent-enforcement-status | healthcare.fhirResources.geton the requested FHIR store consent resource. | 
HL7v2 store methods
| HL7v2 store method | Required permissions | 
|---|---|
| datasets.hl7V2Stores.create | healthcare.hl7V2Stores.createon the parent dataset. | 
| datasets.hl7V2Stores.delete | healthcare.hl7V2Stores.deleteon the requested HL7v2 store. | 
| datasets.hl7V2Stores.export | healthcare.hl7V2Stores.exporton the requested HL7v2 store. | 
| datasets.hl7V2Stores.get | healthcare.hl7V2Stores.geton the requested HL7v2 store. | 
| datasets.hl7V2Stores.import | healthcare.hl7V2Stores.importon the requested HL7v2 store. | 
| datasets.hl7V2Stores.list | healthcare.hl7V2Stores.liston the parent dataset. | 
| datasets.hl7V2Stores.patch | healthcare.hl7V2Stores.updateon the requested HL7v2 store. | 
| datasets.hl7V2Stores.getIamPolicy | healthcare.hl7V2Stores.getIamPolicyon the requested HL7v2 store. | 
| datasets.hl7V2Stores.setIamPolicy | healthcare.hl7V2Stores.setIamPolicyon the requested HL7v2 store. | 
| datasets.hl7V2Stores.messages.create | healthcare.hl7V2Messages.createon the parent HL7v2 store. | 
| datasets.hl7V2Stores.messages.delete | healthcare.hl7V2Messages.deleteon the requested HL7v2 store message. | 
| datasets.hl7V2Stores.messages.get | healthcare.hl7V2Messages.geton the requested HL7v2 store message. | 
| datasets.hl7V2Stores.messages.ingest | healthcare.hl7V2Messages.ingeston the requested HL7v2 store message. | 
| datasets.hl7V2Stores.messages.list | healthcare.hl7V2Messages.liston the parent HL7v2 store. | 
| datasets.hl7V2Stores.messages.patch | healthcare.hl7V2Messages.updateon the requested HL7v2 store message. | 
Location methods
| Location method | Required permissions | 
|---|---|
| locations.get | healthcare.locations.geton the requested location. | 
| locations.list | healthcare.locations.liston the parent Google Cloud project. | 
Healthcare Natural Language API methods
| Healthcare Natural Language API method | Required permissions | 
|---|---|
| nlp.analyzeEntities | healthcare.nlpservice.analyzeEntities | 
Operation methods
| Operation method | Required permission | 
|---|---|
| datasets.operations.get | healthcare.operations.geton the requested dataset. | 
| datasets.operations.list | healthcare.operations.liston the requested dataset. | 
| datasets.operations.cancel | healthcare.operations.cancelon the requested dataset. | 
De-identify methods
| De-identify method | Required permission | 
|---|---|
| services.deidentify.deidentifyDicomInstance | healthcare.deidentify.run | 
| services.deidentify.deidentifyFhirResource | healthcare.deidentify.run | 
Roles
The following tables list the Cloud Healthcare API IAM
roles, including the permissions associated with each role. The roles roles/owner, roles/editor, and roles/viewer include
permissions for other Google Cloud services. For more information
about roles, see Understanding roles.
Consent store roles
| Consent store role | Permissions | 
|---|---|
| Healthcare Consent Store Viewer( List Consent Stores in a dataset. | 
 
 
 
 
 
 
 
       
 
 
 
 | 
| Healthcare Consent Store Administrator( Administer Consent stores. | 
       
 
 
 
       
 
 
 
 | 
Consents roles
| Consents role | Permissions | 
|---|---|
| Healthcare Attribute Definition Reader( Read AttributeDefinition objects in a consent store. | 
 
 
 
 
 
 
 
 
 
       
 
 
 
 | 
| Healthcare Attribute Definition Editor( Edit AttributeDefinition objects. | 
       
 
 
 
 
 
 
 
 
       
 
 
 
 | 
| Healthcare Consent Artifact Reader( Read ConsentArtifact objects in a consent store. | 
 
 
 
 
 
 
 
 
 
       
 
 
 
 | 
| Healthcare Consent Artifact Editor( Edit ConsentArtifact objects. | 
 
 
 
 
 
 
 
 
 
 
       
 
 
 
 | 
| Healthcare Consent Artifact Administrator( Administer ConsentArtifact objects. | 
       
 
 
 
 
 
 
 
 
       
 
 
 
 | 
| Healthcare Consent Reader( Read Consent objects in a consent store. | 
 
 
 
 
 
 
 
 
 
       
 
 
 
 | 
| Healthcare Consent Editor( Edit Consent objects. | 
 
 
 
 
 
       
 
 
 
       
 
 
 
 | 
| Healthcare User Data Mapping Reader( Read UserDataMapping objects in a consent store. | 
 
 
 
 
 
 
 
       
 
 
 
 
 
 | 
| Healthcare User Data Mapping Editor( Edit UserDataMapping objects. | 
 
 
 
 
 
 
 
       
 
 
       
 
 
 | 
Datasets roles
| Datasets role | Permissions | 
|---|---|
| Healthcare Dataset Viewer( List the Healthcare Datasets in a project. | 
 
 
       
 
 
 
 | 
| Healthcare Dataset Administrator( Administer Healthcare Datasets. | 
       
 
       
 
       
 
 
 | 
DICOM store roles
| DICOM store role | Permissions | 
|---|---|
| Healthcare DICOM Store Viewer( List DICOM Stores in a dataset. | 
 
 
 
 
       
 
 
 
 | 
| Healthcare DICOM Store Administrator( Administer DICOM stores. | 
 
 
 
 
 
 
 
 
 
 
 
       
 
 
 
 
 | 
| Healthcare DICOM Viewer( Retrieve DICOM images from a DICOM store. | 
 
 
 
 
 
 
       
 
 
 
 | 
| Healthcare DICOM Editor( Edit DICOM images individually and in bulk. | 
 
 
 
 
 
 
 
 
 
 
       
 
 
 
 
 | 
FHIR store roles
| FHIR store role | Permissions | 
|---|---|
| Healthcare FHIR Store Viewer( List FHIR Stores in a dataset. | 
 
 
 
 
       
 
 
 
 | 
| Healthcare FHIR Store Administrator( Administer FHIR resource stores. | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
       
 
 
 
 
 | 
| Healthcare FHIR Resource Reader( Read and search FHIR resources. | 
 
 
 
 
 
 
 
 
       
 
 
 
 | 
| Healthcare FHIR Resource Editor( Create, delete, update, read and search FHIR resources. | 
 
 
 
 
 
 
 
 
 
 
 
 
       
 
 
 
 
 | 
HL7v2 store roles
| HL7v2 store role | Permissions | 
|---|---|
| Healthcare HL7v2 Store Viewer( View HL7v2 Stores in a dataset. | 
 
 
 
 
       
 
 
 
 | 
| Healthcare HL7v2 Store Administrator( Administer HL7v2 Stores. | 
 
 
       
 
       
 
 
 
 
 | 
| Healthcare HL7v2 Message Ingest( Ingest HL7v2 messages received from a source network. | 
 
 
 
 
 
       
 
 
 
 | 
| Healthcare HL7v2 Message Consumer( List and read HL7v2 messages, update message labels, and publish new messages. | 
 
 
 
 
 
 
 
 
       
 
 
 
 | 
| Healthcare HL7v2 Message Editor( Read, write, and delete access to HL7v2 messages. | 
 
 
       
 
 
 
       
 
 
 
 
 | 
Healthcare Natural Language API roles
| Healthcare Natural Language API role | Permissions | 
|---|---|
| Healthcare NLP Service Viewer Beta( Extract and analyze medical entities from a given text. | 
       
 
 
 
 | 
Cloud Healthcare Service Agent
The Cloud Healthcare Service Agent is a shared service account in your project that Cloud Healthcare API uses to interact with other resources in Google Cloud.
For example, this service agent is used to read and write to Cloud Storage buckets, write to BigQuery, and to publish messages to Pub/Sub from the Cloud Healthcare API.
To execute any of the preceding actions, you must give the Cloud Healthcare Service Agent access to the relevant Cloud Storage bucket, BigQuery dataset, or Pub/Sub topic.
As you create a permission model for your project, remember that granting any of the roles listed below allows the user to invoke operations that run as the Cloud Healthcare Service Agent and have access to any data that the agent has access to:
- roles/healthcare.consentStoreAdmin
- roles/healthcare.consentStoreViewer
- roles/healthcare.dicomStoreEditor
- roles/healthcare.dicomStoreViewer
- roles/healthcare.fhirStoreAdmin
- roles/healthcare.hl7V2StoreAdmin
Similarly, assigning the following permissions to custom roles would also allow the user to invoke operations that will run as the Cloud Healthcare Service Agent:
- healthcare.consentStores.queryAccessibleData
- healthcare.dicomStores.create
- healthcare.dicomStores.update
- healthcare.dicomStores.import
- healthcare.dicomStores.export
- healthcare.fhirStores.create
- healthcare.fhirStores.update
- healthcare.fhirStores.import
- healthcare.fhirStores.export
- healthcare.hl7V2Stores.create
- healthcare.hl7V2Stores.update
For example:
- If a user has any import permissions, then the user can run operations that act as the Cloud Healthcare Service Agent if those operations access any Cloud Storage buckets that the Cloud Healthcare Service Agent has read access to.
- If a user has any export permissions, then the user can run operations that act as the Cloud Healthcare Service Agent if those operations access any bucket that the service agent has write access to.
- A user who has create or update data store permissions has the ability to configure Pub/Sub notification targets or BigQuery streaming destinations that are sent by the Cloud Healthcare Service Agent when changes are made to the data store.
As a best practice, leverage multiple projects to further isolate the permissions given to the Cloud Healthcare Service Agent.