# MongoDB Atlas Portal

Apono’s MongoDB Atlas integration enables you to securely manage just-in-time (JIT) access to your Atlas Organizations and Projects. You can connect Apono to a [single cluster](#single-cluster) or discover [multiple clusters](#multiple-clusters-deep-discovery).

***

### Single cluster

With the single-cluster integration, Apono connects directly to one MongoDB Atlas cluster and discovers all of its resources for streamlined access management.

#### Prerequisites

<table><thead><tr><th width="267">Item</th><th>Description</th></tr></thead><tbody><tr><td><strong>Apono Connector</strong></td><td><p>On-prem connection serving as a bridge between a MongoDB Atlas instance and Apono:</p><ul><li><a href="../../aws-environment/apono-connector-for-aws">AWS</a></li><li><a href="../../azure-environment/apono-connector-for-azure">Azure</a></li><li><a href="../../gcp-environment/apono-connector-for-gcp">GCP</a></li><li><a href="../../kubernetes-environment/apono-connector-for-kubernetes">Kubernetes</a></li></ul></td></tr><tr><td><strong>Atlas Command Line Interface (Atlas CLI)</strong></td><td><a href="https://www.mongodb.com/docs/atlas/cli/stable/install-atlas-cli/">Command line interface</a> for provisioning and managing Atlas database deployments from the terminal</td></tr><tr><td><strong>MongoDB Atlas Info</strong></td><td><p>Information for the MongoDB Atlas UI resources to be integrated:</p><ul><li>Cluster name</li><li>Organization ID</li></ul></td></tr></tbody></table>

#### Create an API key

You must create an API key with the **Organization User** role for the Apono connector.

Follow these steps to create the API key:

1. In the Atlas CLI, create the API key. The following command will return the public and private API keys in the response.

{% hint style="warning" %}
Be sure to replace `<ORGANIZATION_ID>` with the organization ID of the MongoDB Atlas UI to integrate.
{% endhint %}

{% code overflow="wrap" %}

```shell
atlas organizations apiKeys create --role ORG_OWNER --desc apono_connector --orgId <ORGANIZATION_ID>
```

{% endcode %}

2. Using the keys from the previous step, [create a secret](https://docs.apono.io/docs/connectors-and-secrets/apono-integration-secret) for the MongoDB Atlas UI instance.

```shell
"public_key": "#PUBLIC_KEY"
"private_key": "#PRIVATE_KEY"
```

You can now [integrate your MongoDB Portal resources](#integrate-mongodb-atlas-portal).

#### Integrate MongoDB Atlas Portal

<figure><img src="https://1094436629-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fv6MBfUGvblSdAz31yJXm%2Fuploads%2Fgit-blob-8afd9f120a46469e201ba48d2d27c7479f60b2fd%2FIntegrate-mongo-atlas-portal-1.png?alt=media" alt="" width="563"><figcaption><p>Mongo Atlas Portal tile</p></figcaption></figure>

{% hint style="success" %}
You can also use the steps below to integrate with Apono using Terraform.

In step **11**, instead of clicking **Confirm**, follow the **Are you integrating with Apono using Terraform?** guidance.
{% endhint %}

Follow these steps to complete the integration:

1. On the [**Catalog**](https://app.apono.io/catalog?search=mongo+atlas+portal) tab, click **Mongo Atlas Portal**. The **Connect Integration** page appears.
2. Under **Discovery**, click one or both resource types to sync with Apono.

{% hint style="info" %}
Apono automatically discovers and syncs all the instances in the environment. After syncing, you can manage access flows to these resources.
{% endhint %}

3. Click **Next**. The **Apono connector** section expands.
4. From the dropdown menu, select a connector.

{% hint style="success" %}
If the desired connector is not listed, click **+ Add new connector** and follow the instructions for creating a connector ([AWS](https://docs.apono.io/docs/aws-environment/apono-connector-for-aws), [Azure](https://docs.apono.io/docs/azure-environment/apono-connector-for-azure), [GCP](https://docs.apono.io/docs/gcp-environment/apono-connector-for-gcp), [Kubernetes](https://docs.apono.io/docs/kubernetes-environment/apono-connector-for-kubernetes)).
{% endhint %}

5. Click **Next**. The **Integration Config** section expands.
6. Define the **Integration Config** settings.

   <table><thead><tr><th width="234">Setting</th><th>Description</th></tr></thead><tbody><tr><td><strong>Integration Name</strong></td><td>Unique, alphanumeric, user-friendly name used to identify this integration when constructing an access flow</td></tr><tr><td><strong>Organization ID</strong></td><td>ID of the organization of the MongoDB Atlas UI instance to connect</td></tr></tbody></table>
7. Click **Next**. The **Secret Store** section expands.
8. [Associate the secret or credentials](https://docs.apono.io/docs/connectors-and-secrets/apono-integration-secret) from step **2** of the previous section.
9. Click **Next**. The **Get more with Apono** section expands.
10. Define the **Get more with Apono** settings.

    <table><thead><tr><th width="238">Setting</th><th>Description</th></tr></thead><tbody><tr><td><strong>Credential Rotation</strong></td><td>(Optional) Number of days after which the database credentials must be rotated<br><br>Learn more about the <a href="../../architecture-and-security/credentials-rotation-policy">Credentials Rotation Policy</a>.</td></tr><tr><td><strong>User cleanup after access is revoked (in days)</strong></td><td><p>(Optional) Defines the number of days after access has been revoked that the user should be deleted</p><p><br>Learn more about <a href="../../architecture-and-security/periodic-user-cleanup-and-deletion">Periodic User Cleanup &#x26; Deletion</a>.</p></td></tr><tr><td><strong>Custom Access Details</strong></td><td>(Optional) Instructions explaining how to access this integration's resources<br><br>Upon accessing an integration, a message with these instructions will be displayed to end users in the User Portal. The message may include up to <strong>400 characters</strong>.<br><br>To view the message as it appears to end users, click <strong>Preview</strong>.</td></tr><tr><td><strong>Integration Owner</strong></td><td><p>(Optional) Fallback approver if no <a href="../../access-flows/dynamic-access-management/resource-and-integration-owners">resource owner</a> is found<br><br>Follow these steps to define one or several integration owners:</p><ol><li>From the <strong>Attribute</strong> dropdown menu, select <strong>User</strong> or <strong>Group</strong> under the relevant identity provider (IdP) platform.</li><li>From the <strong>Value</strong> dropdown menu, select one or multiple users or groups.</li></ol><p><br><strong>NOTE</strong>: When <strong>Resource Owner</strong> is defined, an <strong>Integration Owner</strong> must be defined.</p></td></tr><tr><td><strong>Resource Owner</strong></td><td><p>(Optional) Group or role responsible for managing access approvals or rejections for the resource<br><br>Follow these steps to define one or several <a href="../../access-flows/dynamic-access-management/resource-and-integration-owners">resource owners</a>:</p><ol><li>Enter a <strong>Key name</strong>. This value is the name of the tag created in your cloud environment.</li><li>From the <strong>Attribute</strong> dropdown menu, select an attribute under the IdP platform to which the key name is associated.<br><br>Apono will use the value associated with the key (tag) to identify the resource owner. When you update the membership of the group or role in your IdP platform, this change is also reflected in Apono.</li></ol><p><br><strong>NOTE</strong>: When this setting is defined, an <strong>Integration Owner</strong> must also be defined.</p></td></tr></tbody></table>
11. Click **Confirm**.

<details>

<summary>💡Are you integrating with Apono using Terraform?</summary>

If you want to integrate with Apono using Terraform, follow these steps instead of clicking **Confirm**:

1. At the top of the screen, click **View as Code**. A modal appears with the completed Terraform configuration code.
2. Click to copy the code.
3. Make any additional edits.
4. Deploy the code in your Terraform.

Refer to [Integration Config Metadata](https://docs.apono.io/metadata-for-integration-config/integration-metadata/mongodb-atlas-organization) for more details about the schema definition.

</details>

Now that you have completed this integration, you can [create access flows](https://docs.apono.io/docs/access-flows/access-flows) that grant permission to your MongoDB Atlas UI Organizations and Projects.

***

### Multiple clusters (deep discovery)

Apono provides enhanced integration capabilities with MongoDB Atlas Portal, permitting the discovery and management of multiple clusters simultaneously.

To discover multiple clusters in an Organization, Apono creates a *Sub Integration* for every discovered cluster, with its own Databases, Documents, and Roles.

{% hint style="warning" %}
Deep discovery has the following limitations:

* Deep discovery currently supports only AWS and Azure secret stores.
* All Apono connectors must have proper network access to their MongoDB Atlas clusters.
  {% endhint %}

#### Prerequisites

<table><thead><tr><th width="249.14019775390625">Item</th><th>Description</th></tr></thead><tbody><tr><td><strong>MongoDB Atlas Account</strong></td><td>MongoDB Atlas account with organization-level access</td></tr><tr><td><strong>Apono Connector</strong></td><td><p>On-prem connection serving as a bridge between a MongoDB Atlas instance and Apono:</p><ul><li><a href="../../aws-environment/apono-connector-for-aws">AWS</a></li><li><a href="../../azure-environment/apono-connector-for-azure">Azure</a></li><li><a href="../../gcp-environment/apono-connector-for-gcp">GCP</a></li><li><a href="../../kubernetes-environment/apono-connector-for-kubernetes">Kubernetes</a></li></ul></td></tr><tr><td><strong>Atlas Command Line Interface (Atlas CLI)</strong></td><td><a href="https://www.mongodb.com/docs/atlas/cli/stable/install-atlas-cli/">Command line interface</a> for provisioning and managing Atlas database deployments from the terminal</td></tr><tr><td><strong>MongoDB Atlas Info</strong></td><td><p>Information for the MongoDB Atlas UI resources to be integrated:</p><ul><li>Cluster name</li><li>Organization ID</li></ul></td></tr></tbody></table>

#### Create an API key

You must create an API key with the **Organization Owner** role for the Apono connector.

Follow these steps to create the API key:

1. In the Atlas CLI, create the API key. The following command will return the public and private API keys in the response.

{% hint style="warning" %}
Be sure to replace `<ORGANIZATION_ID>` with the organization ID of the MongoDB Atlas UI to integrate.
{% endhint %}

{% code overflow="wrap" %}

```shell
atlas organizations apiKeys create --role ORG_OWNER --desc apono_connector --orgId <ORGANIZATION_ID>
```

{% endcode %}

2. Using the keys from the previous step, [create a secret](https://docs.apono.io/docs/connectors-and-secrets/apono-integration-secret) for the MongoDB Atlas UI instance.

```shell
"public_key": "#PUBLIC_KEY"
"private_key": "#PRIVATE_KEY"
```

{% hint style="warning" %}
Only AWS Secret Store and Azure Vault are supported for this integration at this time.
{% endhint %}

#### Integrate MongoDB Atlas Portal

<figure><img src="https://1094436629-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fv6MBfUGvblSdAz31yJXm%2Fuploads%2Fgit-blob-8afd9f120a46469e201ba48d2d27c7479f60b2fd%2FIntegrate-mongo-atlas-portal-1.png?alt=media" alt="" width="563"><figcaption><p>Mongo Atlas Portal tile</p></figcaption></figure>

{% hint style="success" %}
You can also use the steps below to integrate with Apono using Terraform.

In step **12**, instead of clicking **Confirm**, follow the **Are you integrating with Apono using Terraform?** guidance.
{% endhint %}

Follow these steps to complete the integration:

1. On the [**Catalog**](https://app.apono.io/catalog?search=mongo+atlas+portal) tab, click **Mongo Atlas Portal** integration. The **Connect Integration** page appears.
2. Under **Discovery**, click one or both resource types to sync with Apono.
3. Select one or several sub integrations:
   1. Under **Connect Sub Integration**, select **Cluster** and any child resource.
   2. (Optional) Select one or more additional sub integrations.

      <figure><img src="https://1094436629-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fv6MBfUGvblSdAz31yJXm%2Fuploads%2Fgit-blob-87ab551dc0839ab9b7497080ea0572fa88b17836%2Fimage%20(51).png?alt=media" alt="" width="375"><figcaption><p>Directory section</p></figcaption></figure>

{% hint style="info" %}
Apono automatically discovers and syncs all the instances in the environment. After syncing, you can manage access flows to these resources.
{% endhint %}

4. Click **Next**. The **Apono connector** section expands.
5. From the dropdown menu, select a connector.

{% hint style="success" %}
If the desired connector is not listed, click **+ Add new connector** and follow the instructions for creating a connector ([AWS](https://docs.apono.io/docs/aws-environment/apono-connector-for-aws), [Azure](https://docs.apono.io/docs/azure-environment/apono-connector-for-azure), [GCP](https://docs.apono.io/docs/gcp-environment/apono-connector-for-gcp), [Kubernetes](https://docs.apono.io/docs/kubernetes-environment/apono-connector-for-kubernetes)).
{% endhint %}

6. Click **Next**. The **Integration Config** section expands.
7. Define the **Integration Config** settings.

   <table><thead><tr><th width="234">Setting</th><th>Description</th></tr></thead><tbody><tr><td><strong>Integration Name</strong></td><td>Unique, alphanumeric, user-friendly name used to identify this integration when constructing an access flow</td></tr><tr><td><strong>Organization ID</strong></td><td>ID of the organization of the MongoDB Atlas UI instance to connect</td></tr></tbody></table>
8. Click **Next**. The **Secret Store** section expands.
9. [Associate the secret or credentials](https://docs.apono.io/docs/connectors-and-secrets/apono-integration-secret) from step **2** in the previous section
10. Click **Next**. The **Get more with Apono** section expands.
11. Define the **Get more with Apono** settings.

    <table><thead><tr><th width="238">Setting</th><th>Description</th></tr></thead><tbody><tr><td><strong>Credential Rotation</strong></td><td>(Optional) Number of days after which the database credentials must be rotated<br><br>Learn more about the <a href="../../architecture-and-security/credentials-rotation-policy">Credentials Rotation Policy</a>.</td></tr><tr><td><strong>User cleanup after access is revoked (in days)</strong></td><td><p>(Optional) Defines the number of days after access has been revoked that the user should be deleted</p><p><br>Learn more about <a href="../../architecture-and-security/periodic-user-cleanup-and-deletion">Periodic User Cleanup &#x26; Deletion</a>.</p></td></tr><tr><td><strong>Custom Access Details</strong></td><td>(Optional) Instructions explaining how to access this integration's resources<br><br>Upon accessing an integration, a message with these instructions will be displayed to end users in the User Portal. The message may include up to <strong>400 characters</strong>.<br><br>To view the message as it appears to end users, click <strong>Preview</strong>.</td></tr><tr><td><strong>Integration Owner</strong></td><td><p>(Optional) Fallback approver if no <a href="../../access-flows/dynamic-access-management/resource-and-integration-owners">resource owner</a> is found<br><br>Follow these steps to define one or several integration owners:</p><ol><li>From the <strong>Attribute</strong> dropdown menu, select <strong>User</strong> or <strong>Group</strong> under the relevant identity provider (IdP) platform.</li><li>From the <strong>Value</strong> dropdown menu, select one or multiple users or groups.</li></ol><p><br><strong>NOTE</strong>: When <strong>Resource Owner</strong> is defined, an <strong>Integration Owner</strong> must be defined.</p></td></tr><tr><td><strong>Resource Owner</strong></td><td><p>(Optional) Group or role responsible for managing access approvals or rejections for the resource<br><br>Follow these steps to define one or several <a href="../../access-flows/dynamic-access-management/resource-and-integration-owners">resource owners</a>:</p><ol><li>Enter a <strong>Key name</strong>. This value is the name of the tag created in your cloud environment.</li><li>From the <strong>Attribute</strong> dropdown menu, select an attribute under the IdP platform to which the key name is associated.<br><br>Apono will use the value associated with the key (tag) to identify the resource owner. When you update the membership of the group or role in your IdP platform, this change is also reflected in Apono.</li></ol><p><br><strong>NOTE</strong>: When this setting is defined, an <strong>Integration Owner</strong> must also be defined.</p></td></tr></tbody></table>
12. Click **Confirm** to complete the setup.

<details>

<summary>💡Are you integrating with Apono using Terraform?</summary>

If you want to integrate with Apono using Terraform, follow these steps instead of clicking **Confirm**:

1. At the top of the screen, click **View as Code**. A modal appears with the completed Terraform configuration code.
2. Click to copy the code.
3. Make any additional edits.
4. Deploy the code in your Terraform.

Refer to [Integration Config Metadata](https://docs.apono.io/metadata-for-integration-config/integration-metadata/mongodb-atlas-organization) for more details about the schema definition.

</details>

#### Tag the MongoDB Atlas cluster

Follow these steps to tag the cluster:

1. In your MongoDB Atlas cluster, navigate to the **Clusters** or **Overview** page to [manage your tags](https://www.mongodb.com/docs/atlas/database-deployment-tags/).
2. For clusters in different networks or VPCs, tag each cluster with the Apono connector ID:
   1. Enter *apono-connector-id* for the **Key**.
   2. Enter the ID of the Apono connector in the cluster's\
      network for the **Value**.

{% hint style="warning" %}
Each network or VPC hosting cluster must have a unique Apono connector.
{% endhint %}

3. Tag each cluster for the type of Apono connection.

<details>

<summary>Standard connection</summary>

No additional configuration needed.

</details>

<details>

<summary>Private connection</summary>

1. Enter *apono-connection-type* for the **Key**.
2. Enter *Private* for the **Value**.

</details>

<details>

<summary>Private endpoint connection</summary>

1. Enter *apono-connection-type* for the **Key**.
2. Enter *PrivateEndpoint* for the **Value**.
3. Enter *apono\_private\_endpoint\_id* for the **Key**.
4. Enter the private endpoint ID for the **Value**.

</details>

Now that you have completed this integration, you can [create access flows](https://docs.apono.io/docs/access-flows/access-flows) that grant permission to your MongoDB Atlas UI Organizations and Projects.
