> For the complete documentation index, see [llms.txt](https://docs.iotcore.omnicore.korewireless.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.iotcore.omnicore.korewireless.com/overview/universal-device-broker/mqtt-and-http-devices/guides/security/identity-and-access-management-iam.md).

# Identity and Access Management (IAM)

## Identity and Access Management (IAM)

This page explains how to control access to devices using Identity and Access Management (IAM). Access privileges can be assigned at the subscription level and cannot be managed at the individual device or registry level. Typically, access is granted to individuals or groups of users. For information on device security, which uses public/private key authentication, please refer to the section on device security.

For instance, if you assign a user the role of a provisioner in an IAM policy for a subscription, that user will have the ability to add or remove devices, but will not be able to modify or delete the registry itself.

### Managing Users[​](https://docs.omnicore.korewireless.com/docs/Universal%20Device%20Broker/MQTT%20&%20HTTP%20Devices/Guides/Security/iam-access-control#managing-users) <a href="#managing-users" id="managing-users"></a>

You can manage the users in your current OmniCore subscription by navigating to the IAM > Users section. Users can be added using their email address, which must belong to the tenant domain. For example, if your organization domain is @example.com, only users with the same domain can be added. There is an exception for adding Partner staff, which will be described in the Partner section below.

### Roles[​](https://docs.omnicore.korewireless.com/docs/Universal%20Device%20Broker/MQTT%20&%20HTTP%20Devices/Guides/Security/iam-access-control#roles) <a href="#roles" id="roles"></a>

A role is a collection of permissions. For example, the role of "roles/viewer" includes the permissions "registries.get," "registries.list," "devices.get," and "devices.list." Roles are assigned to users to grant them the ability to perform actions on the registries within your subscription.

<figure><img src="https://1780584567-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPYrQYTiVx6eSRXCWxcKm%2Fuploads%2FxQoxGVletRdjB77l3jEi%2Froles.png?alt=media&amp;token=a4d3b725-374a-484c-86e2-f852be344e44" alt=""><figcaption></figcaption></figure>

The following table lists the OmniCore IAM roles, including the permissions associated with each role:

| Role             | Description                                                                           | Permissions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| ---------------- | ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Viewer           | Read-only access to all OmniCore resources                                            | <p>omnicore.registries.get<br>omnicore.registries.list<br>omnicore.devices.get<br>omnicore.devices.list<br>omnicore.sinks.list<br>omnicore.apikeys.list<br>omnicore.metrics.get<br>omnicore.subscription.get<br></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| DeviceController | Access to update the configuration of devices, but not to create or delete devices    | <p>All of the above and:<br>omnicore.devices.updateConfig<br>omnicore.devices.sendCommand</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Provisioner      | Access to create and delete devices from registries, but not to modify the registries | <p>All of the above, and:<br>omnicore.devices.create<br>omnicore.devices.delete<br>omnicore.devices.update<br>omnicore.devices.bindGateway<br>omnicore.devices.unbindGateway</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Editor           | Read-write access to all Cloud IoT resources                                          | <p>All of the above, and:<br>omnicore.registries.create<br>omnicore.registries.delete<br>omnicore.registries.update<br>omnicore.audits.list<br></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| Admin            | Read-write access to all User and Identity Provider resources                         | <p>All of the above and:<br>omnicore.users.list<br>omnicore.users.create<br>omnicore.users.delete<br>omnicore.users.update<br>omnicore.users.get<br>omnicore.roles.list<br>omnicore.roles.get<br>omnicore.providers.list<br>omnicore.sinks.create<br>omnicore.sinks.delete<br>omnicore.sinks.get<br>omnicore.apikeys.create<br>omnicore.apikeys.delete<br>omnicore.apikeys.getKey<br>omnicore.partners.list<br>omnicore.partners.create<br>omnicore.partners.delete<br>omnicore.migration.listBatches<br>omnicore.migration.getKey<br>omnicore.migration.createKey<br>omnicore.migration.startMigration<br>omnicore.migration.getBatch<br>omnicore.migration.resolveConflict<br>omnicore.subscription.audits</p> |
| TenantAdmin      | Full control of Tenant. Access to all subscriptions under the tenant                  | <p>All of the above and:<br>omnicore.tenant.update<br>omnicore.tenant.audits<br>omnicore.users.resetPassword<br>omnicore.users.disableUser<br>omnicore.users.createTenantAdmin<br>omnicore.users.updateTenantAdmin<br>omnicore.users.deleteTenantAdmin<br>omnicore.providers.create<br>omnicore.providers.delete<br>omnicore.providers.update<br>omnicore.providers.get</p>                                                                                                                                                                                                                                                                                                                                      |
| APIReader        | Read-only access to Devices and Registries                                            | <p>omnicore.registries.get<br>omnicore.registries.list<br>omnicore.devices.get<br>omnicore.devices.list<br></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| APIController    | Access to update the configuration of devices, but not to create or delete devices    | <p>omnicore.registries.get<br>omnicore.registries.list<br>omnicore.devices.get<br>omnicore.devices.list <br>omnicore.devices.updateConfig<br>omnicore.devices.sendCommand<br></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| APIAdmin         | Backend Application invoking OmniCore through API                                     | <p>omnicore.registries.get<br>omnicore.registries.list<br>omnicore.devices.get<br>omnicore.devices.list <br>omnicore.devices.updateConfig<br>omnicore.devices.sendCommand<br>omnicore.devices.create<br>omnicore.devices.delete<br>omnicore.devices.update<br>omnicore.devices.bindGateway<br>omnicore.devices.unbindGateway<br>omnicore.registries.create<br>omnicore.registries.delete<br>omnicore.registries.update<br>omnicore.sinks.list<br>omnicore.sinks.get<br>omnicore.sinks.create<br>omnicore.sinks.delete<br>omnicore.metrics.get<br></p>                                                                                                                                                            |

### Identity Management[​](https://docs.omnicore.korewireless.com/docs/Universal%20Device%20Broker/MQTT%20&%20HTTP%20Devices/Guides/Security/iam-access-control#identity-management) <a href="#identity-management" id="identity-management"></a>

OmniCore uses GCP Identity Platform for User Management. The default Identity provider in OmniCore is Email/Password. But you can enable SSO with your organization Identify platform by using the SAML sign in Provider. To configure the SAML provider

* Go to the console.
* Choose IAM and under provider click the **Add a Provider** button.
* From the dropdown, select the SAML option.
* Enter the following details:
  1. The Name of the provider. This can be the same as the provider ID, or a custom name. If you enter a custom name, click Edit next to Provider ID to specify the ID (which must begin with saml.).
  2. The provider's Entity ID.
  3. The provider's SAML SSO URL.
  4. The certificate used for token-signing on the provider. Make sure to include the start and end strings. For example:<br>

     Certificate start and end strings

     ```
     -----BEGIN CERTIFICATE-----
     MIICajCCAdOgAwIBAgIBADANBgkqhkiG9w0BAQ0FADBSMQswCQYDVQQGEwJ1czEL
     ...
     LEzc1JwEGQQVDYQCwsQMSBDAF0QAB0w9GikhqkgBNADABIgABIwAgOdACCjaCIIM
     -----END CERTIFICATE-----
     ```
* Under Service provider, enter the Entity ID of your app. This is typically your app's URL. On your SAML identity provider, this is referred to as the audience.
* Add your app to the list of Authorized Domains. For example, if your app's sign-in URL is <https://example.com/login>, add example.com.
* Click Save.

### Partner[​](https://docs.omnicore.korewireless.com/docs/Universal%20Device%20Broker/MQTT%20&%20HTTP%20Devices/Guides/Security/iam-access-control#partner) <a href="#partner" id="partner"></a>

If you have an OmniCore Partner serving as your System Integrator, you can grant access to your OmniCore subscription for their staff. To do this, you first need to add the Partner to your subscription, which can be done in the IAM section. Simply click on the "Add Partner" option, and enter the partner code provided by your partner. After adding the Partner, you can grant access to their employees for the current OmniCore Subscription.

{% hint style="info" %}
NOTE

The partner association to your subscription will depend on the [chosen Deployment Option](/overview/universal-device-broker/mqtt-and-http-devices/resources/deployment-options.md).
{% endhint %}
