arrow-left

All pages
gitbookPowered by GitBook
1 of 10

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Auto Discover AWS RDS Instances

Automatically identify AWS RDS instances in an Account or Organization for JIT access management

Apono’s Auto Discovery feature identifies tagged AWS RDS instances, including MySQL and PostgreSQL. Rather than integrating each instance individually, you can integrate selected databases and their resources at once during your AWS Account or Organization setup.

circle-exclamation

This capability requires network access to each discoverable database. If your databases are in different AWS networks, make sure to create an AWS connector for each network.


hashtag
Prerequisites

Item
Description

hashtag
Enable Auto Discovery

Follow these steps to enable Auto Discovery:

  1. In your AWS RDS database instance, create a user for the Apono connector. As part of this step, you will also create a secret.

chevron-rightIAM Authenticationhashtag
Tag Key
Value or Description
chevron-rightPassword Authenticationhashtag
Tag Key
Value or Description
  1. In the Apono UI, on the tab, click AWS. The Connect Integrations Group page appears.

  2. Under Discovery, click Amazon Account or Amazon Organization.

  3. Under Connect Sub Integration, select Database, Table, and Role to control the granularity of discovery in each discovered instance.

After connecting your AWS Account or AWS Organization to Apono, you will be redirected to the Connected tab to view your integrations. The new AWS integration, along with sub-integrations for each RDS instance, initialize during the first data fetch. The integration becomes Active once the process completes.

Now that you have completed this integration, you can that grant permission to your AWS RDS resources.


hashtag
Troubleshooting

If RDS instances appear with errors on your Integrations page, follow these steps:

  1. Check Tags: Verify all required tags are present and correctly formatted.

  2. Connector Permissions: Ensure the Apono connector has necessary permissions to read tags and access secrets.

  3. Network connectivity: Ensure each RDS instance is accessible by an Apono connector within the same network.

circle-check

For any questions about the discovery process, please contact Apono Support.

Tag your database instancearrow-up-right based on the authentication method you selected in the previous step. In the tables below, the values shown in italics are the exact text you should enter when adding these tags.

AWS region where the secret is stored

AWS RDS MySQL under Connect Sub Integration
  • Complete the Amazon Account or Amazon Organization integration (steps 3-10).

  • Apono Connector

    One or more Apono connectors for AWS with network access to your AWS RDS databases

    Minimum Required Version: 1.5.3

    Follow these steps to update an existing connector.

    AWS Permissions

    Permissions to complete the following tasks in your AWS instance:

    • Create and manage AWS Secrets Store secrets

    • Tag RDS instances

    auth_type

    iam-auth

    apono-connector-id

    ID of the Apono connector in the same AWS Account or AWS Organization as the database

    auth_type

    user-password

    apono-connector-id

    ID of the Apono connector in the same AWS Account or AWS Organization as the database

    apono-secret

    ARN of the secret containing the database credentials

    RDS PostgreSQL
    AWS RDS MySQL
    Catalogarrow-up-right
    create access flows

    region

    S3 Storage

    Amazon S3 (Simple Storage Service) object storage integration with Apono, enables Apono granular permission provisioning

    This guide has been moved. Please visit instead

    hashtag
    KMS-encrypted buckets

    If your organization encrypts S3 Buckets with Customer Managed Keys (or KMS kets), users need access to the key to be able to decrypt the data when they gain JIT access to a bucket.

    Apono supports this use case by granting access to both the bucket and the key when users request access. If S3 Buckets have KMS keys in their metadata, when users request access to S3 Buckets, they also gain access to the KMS key without having to create an extra request.

    this guide

    AWS Integrations

    If your organization uses Amazon Web Services (AWS) as a cloud platform, Apono's AWS integrations can help you securely manage access to your AWS cloud-based services and databases.

    AWS logo

    By identifying and transforming existing privileges, Apono can shift your cloud management from broad permissions to on-demand access flows.

    Through our AWS integrations, Apono enables you to perform the following access tasks:

    • Limit Access: Discover existing cloud privileges and convert them to just-in-time access flows.

    • Enable Self-Service Access: Allow developers to request access to AWS services, buckets, and instances via Slack.

    • Automate Approval Workflows: Create automatic approval processes for sensitive AWS resources.

    • Restrict Third-Party Access: Grant third-parties (customers or vendors) time-based access to specific S3 buckets, RDS, or EC2 instances with MFA verification.

    • Review Access: Audit user cloud access, permissions granted, and reasons for access across AWS.

    EC2 via Systems Manager Agent (SSM)

    Apono AWS EC2 Integration utilizes SSM (System Manager) Agent to for JIT access management for AWS VMs

    hashtag
    EC2 via Systems Manager Agent (SSM)

    circle-info

    Have you connected an AWS account?

    Make sure you integrated your AWS account to Apono. Follow this AWS Integration step-by-step guide.

    hashtag
    Intro

    This integration provides the ability to grant users permissions to connect to the EC2 with a secure connection through SSM.

    hashtag
    Prerequisites

    • An integration between Apono and the AWS Organization or Account where the EC2 is.

    • EC2 machine with SSM agent installed. Installed by default in most EC2s docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agentarrow-up-right

    • End users will need to install the session manager plugin for AWS CLI on the local user's computer. docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-pluginarrow-up-right

    hashtag
    Step-by-step guide

    hashtag
    The EC2 instance role

    Follow the steps below to create an EC2 instance role with the AmazonSSMManagedInstanceCore managed policy. Read more herearrow-up-right.

    1. In the AWS IAM, Click Create new IAM Role

      1. Click Create Role

      2. Choose the AWS Service option

      3. From the dropdown list, choose EC2

      4. Choose EC2 Role for AWS System Manager. Click Next.

      5. Verify that the AmazonSSMManagerInstanceCore policy is added. Click Next

      6. Fill the Role name box (for example, ec2-ssm)

      7. Click Create role

    2. Go back to the Modify IAM Role page

      1. From the dropdown list, choose the new IAM role we created (ec2-ssm)

      2. Click Update IAM role

    hashtag
    Integrating Apono with the EC2 instances

    1. In the Apono UI, edit an existing AWS Org or AWS Account integration or create a new one.

    2. Add the EC2 Connect resource type.

    3. Complete the integration and click Integrate.

    hashtag
    Results

    Apono should now discover EC2 machines! You can now create access flows to EC2 instances.

    AWS Best Practices

    Scale AWS resource management in access flows

    When granting AWS access permissions, listing individual ARNs in IAM policies can quickly cause you to exceed . Apono solves this through and the . These solutions use regex patterns to efficiently manage resource groups instead of listing individual ARNs.

    For additional protection, Apono has implemented a 100-resource threshold as a guardrail when individual ARN specification is needed.

    The following sections explain how Apono prevents you from exceeding AWS's inline policy limit:

    • Create strategic AWS resource groupings for access flows

    Pleas note: it takes about 30 minutes for the AWS sync to finish.

    Understand how Apono provides clear warnings when the AWS policy limit is exceeded

  • Learn how Apono maintains consistent behavior whether your team uses Portal, Teams, or Slack

  • For example, instead of individually specifying 200 S3 buckets in a policy (which would exceed AWS's limit), you can use resource tags to group them by environment or function.

    circle-info

    Apono validates for the following types of AWS resources:

    • ASM Secret

    • DynamoDB table

    • EC2 Connect

    • EC2 Manage

    • S3 Bucket (by "any resource" and region tags)

    • SNS Topic

    • SQS queue


    hashtag
    Prerequisite

    Item
    Description

    Apono Connector

    On-prem serving as a bridge between an AWS instance and Apono

    Minimum Required Version: 1.7.0

    Use the following steps to .


    hashtag
    Admin Guidance

    When defining access flows that include AWS resources, your resource definition strategy directly impacts policy management.

    hashtag
    Questions

    Before selecting AWS resources for an access flow, consider the following questions:

    • Can all resources of an integration be selected?

    • Have tags been applied to logically group resources by environment, function, or team?

    • Can an access scope be created to group resources across multiple AWS integrations?

    • Is individual resource selection truly necessary for security requirements?

    hashtag
    Resource Definition Strategies

    To effectively manage AWS permissions while avoiding policy character limits, you can use access scopes, integrations, or bundles. When possible, we strongly recommend using access scopes or AQL.

    The following table explains the strategy for each approach.

    Type
    Strategy

    Access Scopes

    (Strongly Recommended, ) Use when you need dynamic, rule-based resource grouping

    Access scopes and AQL let you create flexible filters that adapt to your changing infrastructure. This makes them ideal for scenarios like all production databases or EC2 instances in the eu-region.

    Integrations

    () Use when providing access to an entire AWS account or organization, or to resources that share specific tags

    Integrations let you align permissions with your organization structure:

    • Use tags in your cloud environment to group resources, such as production, eu-region, customer-support.

    • Apply Any resources when all resources of the integration can be included.

    Bundles

    (, ) Use when packaging related resources as a cohesive unit for user requests

    Bundles let you create logical groupings of permissions that serve specific functions.

    When explore one of the following options:

    • Use tags in your cloud environment to group resources, such as production, eu-region, customer-support.

    hashtag
    Apono Safeguard

    If you select too many AWS resources for an access flow, the Apono UI will display a warning message instructing you to reduce the number of selected resources.

    Warning message
    Access Flow
    Conditions

    Automatic

    • You have selected more than 100 AWS resources by name (Select by name) from one integration or between multiple integrations.

    • You have selected more than 100 AWS resources by name (Select by name) within one bundle or between multiple bundles.

    Self Serve

    • You have selected more than 100 AWS resources within one bundle or between multiple bundles.


    hashtag
    Requestor Guidance

    When requesting access to many AWS resources, Apono will warn you if you have selected too many AWS resources.

    Warning message

    You will receive different notifications about AWS resource limits depending on which platform you use to submit your access request:

    • Portal & Teams: Apono displays a warning before submission when you click Request, preventing requests that exceed the limit.

    circle-info

    In some cases, the request might pass initial validation but still trigger a post-submission notification to select fewer resources.

    • Slack: Apono processes your request first, then sends a message if you need to resubmit with fewer resources.

    hashtag
    Known Limitations While Building Access Flows, Bundles, and Access Scopes

    The following configurations within access flows or when bundling multiple resources will exceed AWS policy size constraints.

    • Specifying resources by name or ID: Selecting specific resource names or IDs one by one.

    • S3 buckets: as AWS does not support tagging buckets, it should be handled with region tags or through access scopes or AQL patterns where possible.

    • Excluding a list of resource names or ID: choosing a list of resources to exclude can similarly inflate policy size and is best handled through access scopes or AQL patterns where possible.

    AWS's inline policy character limitarrow-up-right
    access scopes
    Apono Query Language (AQL)
    This strategy is ideal for scenarios like managing cross-account DevOps access or regional support team permissions.
    Apply Any resources when all resources of the integration can be included.

    This strategy is ideal for scenarios like complete development environment access or full analytics platform access.

    connection
    update an existing connector
    All Access Flows
    Automatic Access Flow
    Automatic Access Flow
    Self Serve Access Flow
    creating a bundle

    Integrate an AWS Account or Organization

    Learn how to complete an AWS integration in the Apono UI

    Apono offers AWS users a simple way to centralize cloud management through our platform. Through a single integration, you can manage multiple AWS services across various Accounts and Organizations.


    hashtag
    Integrate an AWS Account

    hashtag
    Prerequisites

    • installed in your AWS Account

    • To sync and manage access to EC2 servers, make sure you add the AmazonSSMManagedInstanceCore policy to the connector's IAM role

    hashtag
    Integration

    circle-check

    You can also use the steps below to integrate with Apono using Terraform.

    In step 10, instead of clicking Confirm, follow the Are you integrating with Apono using Terraform? guidance.

    Follow these steps to integrate Apono with your AWS Account:

    1. On the tab, click AWS. The Connect Integrations Group page appears.

    2. Under Discovery, click Amazon Account.

    3. Click one or more resource types to sync with Apono.

    circle-info

    Apono automatically discovers and syncs all the instances in the environment. After syncing, you can manage Access Flows to these resources.

    1. Click Next. The Apono connector section expands.

    2. From the dropdown menu, select a connector. Choosing a connector links Apono to all the services available on the account where the connector is located.

    circle-info

    If the desired connector is not listed, click + Add new connector and follow the instructions for creating an .

    1. Click Next. The Integration Config section expands.

    2. Define the Integration Config settings.

      Setting
      Description
    chevron-right💡Are you integrating with Apono using Terraform?hashtag

    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.

    After connecting your AWS account to Apono, you will be redirected to the Connected tab to view your integrations. The new AWS integration will initialize once it completes its first data fetch. Upon completion, the integration will be marked Active.

    Now that you have completed this integration, you can that grant permission to AWS IAM resources, such as AWS Roles.


    hashtag
    Integrate an AWS Organization

    You can integrate with Apono to manage resources across your Organization.

    hashtag
    Prerequisite

    Item
    Description

    hashtag
    Integration

    circle-check

    You can also use the steps below to integrate with Apono using Terraform.

    In step 10, instead of clicking Confirm, follow the Are you integrating with Apono using Terraform? guidance.

    Follow these steps to integrate Apono with your AWS Organization:

    1. On the tab, click AWS. The Connect Integrations Group page appears.

    2. Under Discovery, click Amazon Organization.

    3. Click one or more resource types to sync with Apono.

    circle-info

    Apono automatically discovers and syncs all the instances in the environment. After syncing, you can manage access flows to these resources.

    1. Select the Permission Boundary resource to allow Apono to temporarily restrict overprivileged access.

    circle-check

    To learn more about how to manage overprivileged access, read about .

    1. Click Next. The Apono connector section expands.

    2. From the dropdown menu, select a connector. Choosing a connector links Apono to all the services available on the account where the connector is located.

    circle-info

    If the desired connector is not listed, click + Add new connector and follow the instructions for creating an .

    1. Click Next. The Integration Config section expands.

    2. Define the Integration Config settings.

      Setting
      Description
    chevron-right💡Are you integrating with Apono using Terraform?hashtag

    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.

    After connecting your AWS account to Apono, you will be redirected to the Connected tab to view your integrations. The new AWS integration will initialize once it completes its first data fetch. Upon completion, the integration will be marked Active.

    hashtag
    Enable multi-region resource discovery in Apono

    Apono leverages AWS Resource Explorer for multi-region scans for your AWS Organization integration. Apono uses this organization-level configuration to automatically deploy local indexes and aggregate them into a single searchable view.

    This configuration provides:

    • A centralized aggregator index for organization-wide search

    • Automated creation and maintenance of local indexes

    • Consistent visibility across teams, regions, and environments

    Prerequisites

    Item
    Description

    Enable trusted access for Resource Explorer

    Follow these steps to enable trusted access:

    1. From theyour Management account, open AWS Resource Explorer.

    2. From the navigation, click Settings. The Settings page appears.

    3. In the multi-account/organization section, follow the prompt to Enable trusted access.

    circle-check

    You can also enable trusted access from AWS Organizations.

    Follow these steps:

    1. From your Management account, open AWS Organizations.

    Configure the organization deployment

    Follow these steps to configure the organization deployment:

    1. Open the Quick Setup from the Systems manager or Resource Explorer.

    chevron-rightSystems Managerhashtag
    1. Open AWS Systems Manager.

    2. From the navigation, click Change Management Tools > Quick Setup. The AWS Quick Setup page opens.

    chevron-rightResource Explorerhashtag
    1. Open AWS Resource Explorer.

    2. From the navigation, click Settings. The Settings page opens.

    1. Select the Aggregator Index Region. This region becomes the central location for organization-wide search.

    2. Under Targets, select the accounts that include the resources you want discovered:

      • Entire Organization: (Recommended) Enables complete visibility

    circle-info

    If a regions selector is not present, all supported regions for the selected targets may be implicitly included.

    1. Under Summary, review the aggregator region, targets, and regions.

    2. Select Create. The Quick Setup will deploy the following:

      • Local indexes in each selected region or account

    Verify the deployment

    After the deployment has completed, follow these steps to verify the deployment:

    1. From the Management account, open AWS Resource Explorer.

    2. From the navigation, click Settings. The Settings page opens.

    3. Under Indexes, locate the region set as the aggregator index during the Quick Setup. The region should be denoted as Aggregator.

    circle-info

    If some regions or accounts are missing the index, read

    Troubleshoot Quick Setup

    chevron-rightQuick Setup fails in some regions.hashtag

    Symptoms

    • Quick Setup shows Failed for some configs.

    • Error text mentions cloudformation:CreateStack

    chevron-rightThe index is missing in some regions or accounts.hashtag

    Symptoms

    • Some accounts or regions have no index.

    • Quick Setup shows partial success.

    chevron-rightThe aggregator index is missing from the Management account.hashtag

    Symptoms

    • In the Management account, in the chosen Aggregator Region:

    chevron-rightThe view that was created in Resource Explorer is empty.hashtag

    After enabling Resource Explorer, it can take up to 36 hours for all supported resources across all regions to be fully indexed. Read more .

    Now that you have completed this integration, you can that grant permission to AWS IAM resources, such as AWS Roles.


    hashtag
    Troubleshooting

    Please refer to our if you encounter errors while integrating.

    Region in which the organization runs

    AWS Profile Name

    (Optional) Name of the AWS profile By default, Apono sets this value to apono.

  • Click Next. The Get more with Apono section expands.

  • Define the Get more with Apono settings.

    Setting
    Description

    Credential Rotation

    (Optional) Number of days after which the database credentials must be rotated Learn more about the .

    User cleanup after access is revoked (in days)

    (Optional) Defines the number of days after access has been revoked that the user should be deleted

    Learn more about .

    Custom Access Details

    (Optional) Instructions explaining how to access this integration's resources 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 400 characters. To view the message as it appears to end users, click Preview.

    Integration Owner

  • Click Confirm.

  • Click to copy the code.
  • Make any additional edits.

  • Deploy the code in your Terraform.

  • Refer to Integration Config Metadataarrow-up-right for more details about the schema definition.

    Region in which the organization runs

    AWS SSO Region

    Region for which your single sign-on is configured

    SSO Portal

    This is required for Apono to generate a sign-in link for end users to use their granted access.

    Management Account Role ARN

    (Optional) (step 5) of the role to assume in the management account

    Exclude Organization Unit IDs

    (Optional) Comma-separated list of organizational unit IDs to exclude Example: ou-aaa1-1111,ou-bbb2-2222

    Exclude Account IDs

    (Optional) Comma-separated list of account IDs to exclude Example: 7665544332211,7665544332222,766554433333333

  • Click Next. The Get more with Apono section expands.

  • Define the Get more with Apono settings.

    Setting
    Description

    Custom Access Details

    (Optional) Instructions explaining how to access this integration's resources 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 400 characters. To view the message as it appears to end users, click Preview.

    Integration Owner

    (Optional) Fallback approver if no is found Follow these steps to define one or several integration owners:

    1. From the Attribute dropdown menu, select User or Group under the relevant identity provider (IdP) platform.

    2. From the Value dropdown menu, select one or multiple users or groups.

    NOTE: When Resource Owner is defined, an Integration Owner

    Resource Owner

    (Optional) Group or role responsible for managing access approvals or rejections for the resource Follow these steps to define one or several :

    1. Enter a Key name. This value is the name of the tag created in your cloud environment.

    2. From the Attribute dropdown menu, select an attribute under the IdP platform to which the key name is associated. 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.

    NOTE: When this setting is defined, an

  • Click Confirm.

  • Click to copy the code.
  • Make any additional edits.

  • Deploy the code in your Terraform.

  • Refer to Integration Config Metadataarrow-up-right for more details about the schema definition.

    Less manual setup and fewer cross-account visibility gaps

    From the navigation, click Services. The Services page appears.

  • Click AWS Resource Explorer. The AWS Resource Explorer page opens.

  • If Trusted access is disabled, click Enable trusted access. The Enable trusted access for AWS Resource Explorer pop-up window appears.

  • Click Show the option to enable trusted access for AWS Resource Explorer without performing additional setup tasks.

  • Type enable in the text field.

  • Click Enable trusted access.

  • Click Get started. The Library tab opens.

  • On the Resource Explorer card, click Create. The Configure Resource Explorer for your Organization page opens.

  • Under Multi-account search in Resource Explorer, click Create configuration on Quick Setup. The Configure Resource Explorer for your Organization page opens.

    Specific OUs: Enables scoping deployment

  • From the regions selector, choose all regions where Resource Explorer should create indexes.

  • An aggregator index in the Aggregator Region

  • Default views for centralized search

  • Spot check a member account:

    1. Log in as or assume the role of a sample member account.

    2. Open AWS Resource Explorer in one region that should have an index to ensure an index exists and is Active.

    3. Open AWS Resource Explorer in one region that should not have an index to confirm an index does not exist.

    (or similar) and an explicit denial in a service control policy.

    Likely Cause

    A Service Control Policy denies CloudFormation in some regions, often with aws:RequestedRegion. This results in regions that are allowed by SCP to be successful. And all other regions fail.

    Solution

    Follow these steps:

    1. From the Admin account, open AWS Organizations.

    2. From the navigation, click Policies. The Policies page opens.

    3. Under Service control policies, examine SCPs attached to the affected organizational unit or account for "Effect": "Deny" statements that mention cloudformation:* or specific Cloudformation actions.

    4. Fix the issues through one of the following options:

      1. Add the required regions to the allowlist in aws:RequestedRegion.

      2. Exclude CloudFormation from the deny list. For example, add cloudformation:* to NotAction

    Possible Causes
    • The region was not included in the Quick Setup region selection.

    • The account or organizational unit was not part of the Quick Setup target scope.

    • CloudFormation has been denied by SCP in that region.

    Solution

    Follow these steps:

    1. Review the Targets and Regions (if applicable) selected when you configured the organization deployment.

    2. Check the SCP for the relevant accounts or regions.

    circle-check

    If CloudFormation must stay blocked, you can manually create indexes.

    The index exists but is not marked as Aggregator.
  • The index does not exist.

  • The organization-wide view does not show everything.

  • Possible Causes

    • The Management account is not in one of the Quick Setup targets, such as the selected organizational unit.

    • AWS created aggregator indexes only in member accounts based on your config.

    • The index was manually created as Local, not Aggregator.

    Solution

    Follow these steps:

    1. In the Management account, in the Aggregator Region, ensure an index exists.

    2. In the console, change the index to Aggregator.

    circle-check

    If the index cannot be changed to Aggregator, manually recreate the index as an Aggregator.

    1. Create the organization-wide view in the specific account or region.

    Integration Name

    Unique, alphanumeric, user-friendly name used to identify this integration when constructing an access flow

    Apono Connector

    On-prem connection serving as a bridge between AWS and Apono

    Learn how to install a connector for your AWS Organization or a connector with delegate permissions. Please note the following:

    • To manage EKS resources, you must have one or more access entriesarrow-up-right for the Apono connector to discover your clusters or namespaces. See the connector’s prerequisites for more information.

    • To manage access to EC2 servers, you must add the AmazonSSMManagedInstanceCore policy to the connector's IAM role.

    Integration Name

    Unique, alphanumeric, user-friendly name used to identify this integration when constructing an access flow

    AWS Organization

    An AWS organization must be integrated with Apono.

    All organizational units (OUs) or accounts you plan to include as part of the target must be structured within the AWS organization.

    IAM user or role in the management account

    A user or role used to run Quick Setup in the management account.

    This user or role must be able to complete these tasks:

    • Enable trusted access in AWS Organizations

    • Configure Resource Explorer

    • Use Systems Manager Quick Setup

    • Use AWS Resource Access Manager (RAM)

    • View CloudFormation, SSM, and Resource Explorer status

    Option A

    Use a role or user with the AWS-managed AdministratorAccess policy in the Management account to prevent hidden blocking conditions.

    Option B

    Create a role in the Management account (such as ResourceExplorerAdmin) with a custom managed policy similar to the following example.

    Service Control Policy (SCP)

    SCPs must not deny CloudFormation in any target account or region:

    • SCPs must not explicitly deny:

      • cloudformation:CreateStack

      • cloudformation:UpdateStack

      • cloudformation:*

    • Region-restriction SCPs (aws:RequestedRegion) must adhere to one of the following:

      • Include all required regions in the allowlist.

      • Explicitly exempt CloudFormation from an explicit denial by adding cloudformation:* to NotAction

    IMPORTANT: Failure to adhere to these SCP requirements will prevent Quick Setup from successfully deploying in regions where the SCP has denied CloudFormation.

    Apono connector
    Catalogarrow-up-right
    Apono connector
    create access flows
    Catalogarrow-up-right
    Access Discovery
    Apono connector
    The index is missing in some regions or accounts.
    herearrow-up-right
    create access flows
    troubleshooting guidearrow-up-right
    Integrating an AWS Account
    Integrating an AWS Organization

    Region

    Region

    Amazon Redshift

    Integrate with Apono to view existing permissions and create Access Flows to Amazon Redshift clusters

    Amazon Redshift is a fast, scalable, and secure fully managed data warehouse service in the cloud, serving as a primary data store for vast datasets and analytic workloads. Amazon Web Services (AWS) enables businesses to analyze their data using standard SQL and existing business intelligence tools, promoting insightful decision-making and integration with various AWS services.

    Through this integration, Apono helps you securely manage access to your Amazon Redshift instance.


    hashtag
    Prerequisites

    Item
    Description

    hashtag
    Integrate Amazon Redshift

    circle-check

    You can also use the steps below to integrate with Apono using Terraform.

    In step 10, instead of clicking Confirm, follow the Are you integrating with Apono using Terraform? guidance.

    Follow these steps to complete the integration:

    1. On the tab, click Amazon Redshift. The Connect Integration page appears.

    2. Under Discovery, click Next. The Apono connector section expands.

    3. From the dropdown menu, select a connector. Choosing a connector links Apono to all the services available on the account where the connector is located.

    circle-info

    If the desired connector is not listed, click + Add new connector and follow the instructions for creating an .

    1. Click Next. The Integration Config section expands.

    2. Define the Integration Config settings.

      Setting
      Description
    chevron-right💡Are you integrating with Apono using Terraform?hashtag

    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.

    Now that you have completed this integration, you can that grant permission to your Amazon Redshift instance.


    hashtag
    Troubleshooting

    Refer to for information about errors that may occur.

    .
  • Temporarily relax or detach the SCP, re-run Quick Setup, then restore the SCP.

  • .
    must be defined.
    Integration Owner
    must also be defined.

    (Optional) Fallback approver if no resource owner is found Follow these steps to define one or several integration owners:

    1. From the Attribute dropdown menu, select User or Group under the relevant identity provider (IdP) platform.

    2. From the Value dropdown menu, select one or multiple users or groups.

    NOTE: When Resource Owner is defined, an Integration Owner must be defined.

    Resource Owner

    (Optional) Group or role responsible for managing access approvals or rejections for the resource Follow these steps to define one or several resource owners:

    1. Enter a Key name. This value is the name of the tag created in your cloud environment.

    2. From the Attribute dropdown menu, select an attribute under the IdP platform to which the key name is associated. 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.

    NOTE: When this setting is defined, an Integration Owner must also be defined.

    Credentials Rotation Policy
    Periodic User Cleanup & Deletion
    Single sign-on URLarrow-up-right
    ARN
    resource owner
    resource owners
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "organizations:*",
            "ssm:*",
            "cloudformation:*",
            "resource-explorer-2:*",
            "ram:*",
            "iam:PassRole"
          ],
          "Resource": "*"
        }
      ]
    }

    Hostname of the Amazon Redshift instance to connect

    Port

    Port value for the instance By default, Apono sets this value to 5439.

    Database Name

    Name of the database

  • Click Next. The Secret Store section expands.

  • Associate the secret or credentials.

  • Click Next. The Get more with Apono section expands.

  • Define the Get more with Apono settings.

    Setting
    Description

    Credential Rotation

    (Optional) Number of days after which the database credentials must be rotated Learn more about the .

    User cleanup after access is revoked (in days)

    (Optional) Defines the number of days after access has been revoked that the user should be deleted

    Learn more about .

    Custom Access Details

    (Optional) Instructions explaining how to access this integration's resources 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 400 characters. To view the message as it appears to end users, click Preview.

    Integration Owner

  • Click Confirm.

  • Click to copy the code.
  • Make any additional edits.

  • Deploy the code in your Terraform.

  • Refer to Integration Config Metadataarrow-up-right for more details about the schema definition.

    Apono Connector

    On-prem connection serving as a bridge between an Amazon Redshift instance and Apono Minimum Required Version: 1.3.2 Use the following steps to update an existing connector.

    Secret

    Value generated through AWS or Kubernetes

    Apono does not store credentials. The Apono Connector uses the secret to communicate with services in your environment and separate the Apono web app from the environment for maximal securityarrow-up-right.

    User

    Redshift user for Apono with the CREATEUSER permission

    Amazon Redshift Info

    Information for the Amazon Redshift instance to be integrated:

    • Hostname

    • Port Number

    Integration Name

    Unique, alphanumeric, user-friendly name used to identify this integration when constructing an access flow

    Catalogarrow-up-right
    Apono connector
    create access flows
    Troubleshooting Errors
    Amazon Redshift tile

    Hostname

    RDS PostgreSQL

    Integrate with AWS-managed PostgreSQL for JIT access management for RDS

    PostgreSQL databases are open-source relational database management systems emphasizing extensibility and SQL compliance. AWS enables developers to create cloud-hosted PostgreSQL databases.

    Through this integration, Apono helps you securely manage access to your AWS RDS for PostgreSQL instances.


    hashtag
    Prerequisites

    Item
    Description

    hashtag
    Create an AWS RDS PostgreSQL user

    You must create a user in your AWS RDS PostgreSQL instance for the Apono connector and grant that user permissions to your databases.

    Follow these steps to create a user and grant it database permissions:

    1. Create a new user with either Built-in authentication or IAM authentication.

    circle-exclamation

    You can use only one authentication option on the RDS instance at a time.

    Built-in authentication identifies a user through a username and password.

    Be sure to select a strong password for the user.

    After on your RDS instance, create an AWSAuthenticationPlugin user for the Apono connector. AWSAuthenticationPlugin is an AWS-provided plugin that works seamlessly with IAM to authenticate your users.

    To create the user, run the following commands from your Postgre client.

    1. From your preferred client tool, grant rds_superuser access to the user.

    Permission
    Description
    1. (IAM authentication only) Create and attach the following IAM policy to your identity center permissions set or role.

    1. (Built-in authentication only) with the credentials from step 1.

    circle-info

    When using IAM authentication, a secret does not need to be created.

    The service account and its permissions are managed through IAM roles and policies. The service account is used to authenticate the PostgreSQL instance instead of a secret.


    hashtag
    Integrate Amazon RDS for PostgreSQL

    circle-check

    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.

    Follow these steps to complete the integration:

    1. On the tab, click AWS RDS PostgreSQL. The Connect Integration page appears.

    2. Under Discovery, click one or more resource types to sync with Apono.

    circle-info

    Apono automatically discovers and syncs all the instances in the environment. After syncing, you can manage Access Flows to these resources.

    1. Click Next. The Apono connector section expands.

    2. From the dropdown menu, select a connector. Choosing a connector links Apono to all the services available on the account where the connector is located.

    circle-info

    If the desired connector is not listed, click + Add new connector and follow the instructions for creating an .

    1. Click Next. The Integration Config section expands.

    2. Define the Integration Config settings.

      Setting
      Description
    circle-info

    A secret is not needed for IAM authentication.

    1. Click Next. The Get more with Apono section expands.

    2. Define the Get more with Apono settings.

      Setting
      Description
    chevron-right💡Are you integrating with Apono using Terraform?hashtag

    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.

    Now that you have completed this integration, you can that grant permission to your RDS for PostgreSQL database.

    "username": "REDSHIFT_USERNAME", 
    "password": "PASSWORD"
    CREATE USER apono_connector WITH PASSWORD 'password';
    ALTER USER apono_connector WITH CREATEUSER;

    (Optional) Fallback approver if no resource owner is found Follow these steps to define one or several integration owners:

    1. From the Attribute dropdown menu, select User or Group under the relevant identity provider (IdP) platform.

    2. From the Value dropdown menu, select one or multiple users or groups.

    NOTE: When Resource Owner is defined, an Integration Owner must be defined.

    Resource Owner

    (Optional) Group or role responsible for managing access approvals or rejections for the resource Follow these steps to define one or several resource owners:

    1. Enter a Key name. This value is the name of the tag created in your cloud environment.

    2. From the Attribute dropdown menu, select an attribute under the IdP platform to which the key name is associated. 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.

    NOTE: When this setting is defined, an Integration Owner must also be defined.

    Credentials Rotation Policy
    Periodic User Cleanup & Deletion

    Authorization type for the MySQL service account user:

    • IAM Auth: IAM authentication

    • User / Password: Built-in authentication

    Region

    Location where the PostgreSQL database is deployed

    Instance ID

    ID of the PostgreSQL instance

    Database Name

    Name of the PostgreSQL database

    SSL Mode

    (Optional) Mode of Secure Sockets Layer (SSL) encryption used to secure the connection with the SQL database server

    • require: An SSL-encrypted connection must be used.

    • allow: An SSL-encrypted or unencrypted connection is used. If an SSL encrypted connection is unavailable, the unencrypted connection is used.

    Enable Audit

    (Optional) Feature that allows Apono to ingest and aggregate session audit logs

  • Click Next. The Secret Store section expands.

  • Associate the secret or credentials.

  • User cleanup after access is revoked (in days)

    (Optional) Defines the number of days after access has been revoked that the user should be deleted

    Learn more about .

    Custom Access Details

    (Optional) Instructions explaining how to access this integration's resources 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 400 characters. To view the message as it appears to end users, click Preview.

    Integration Owner

    (Optional) Fallback approver if no is found Follow these steps to define one or several integration owners:

    1. From the Attribute dropdown menu, select User or Group under the relevant identity provider (IdP) platform.

    2. From the Value dropdown menu, select one or multiple users or groups.

    NOTE: When Resource Owner is defined, an Integration Owner

    Resource Owner

    (Optional) Group or role responsible for managing access approvals or rejections for the resource Follow these steps to define one or several :

    1. Enter a Key name. This value is the name of the tag created in your cloud environment.

    2. From the Attribute dropdown menu, select an attribute under the IdP platform to which the key name is associated. 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.

    NOTE: When this setting is defined, an

  • Click Confirm.

  • Click to copy the code.
  • Make any additional edits.

  • Deploy the code in your Terraform.

  • Refer to Integration Config Metadataarrow-up-right for more details about the schema definition.

    Apono Connector

    On-prem connectionarrow-up-right with network access to your AWS RDS for PostgreSQL instances Minimum Required Version: 1.5.3 Use the following steps to update an existing connector.

    NOTE: When installing the Apono connector with CloudFormation, the AWS RDS database policy is automatically created.

    If you do not use CloudFormation, you must create the following policy and assign it to the Apono connector role.

    PostgreSQL Info

    Information for the database instance to be integrated:

    • Instance ID

    • Database Name

    AWS Tag

    (Optional) Metadata label assigned to AWS resources Adding an AWS tag, enables Apono to discover and add resources on your behalf. When adding an AWS tagarrow-up-right, use the following information:

    • Tag key: apono-secret

    • Value: (AWS Secret)

    ALTER USER apono_connector WITH CREATEROLE;

    Allows Apono connector to create, alter, and drop user roles

    GRANT rds_superuser TO apono_connector;

    Assigns the RDS superuser role to the Apono connector, providing comprehensive permissions for database management

    Integration Name

    Unique, alphanumeric, user-friendly name used to identify this integration when constructing an access flow

    Credential Rotation

    (Optional) Number of days after which the database credentials must be rotated Learn more about the Credentials Rotation Policy.

    enabling IAMarrow-up-right
    Create an AWS secret
    Catalogarrow-up-right
    AWS connector
    create access flows
    AWS RDS PostgreSQL
    CREATE USER apono_connector WITH PASSWORD 'secret_passwd';
    CREATE USER apono_connector;
    GRANT rds_iam TO apono_connector;

    Auth Type

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Action": "rds-db:connect",
                "Resource": "arn:aws:rds-db:*:*:dbuser:*/apono_connector",
                "Effect": "Allow"
            }
        ]
    }
    ALTER USER apono_connector WITH CREATEROLE;
    GRANT rds_superuser TO apono_connector;
    {
         "Version": "2012-10-17",
         "Statement": [
             {
                 "Effect": "Allow",
                 "Action": [
                     "rds-db:connect"
                 ],
                 "Resource": [
                     "arn:aws:rds-db:*:*:dbuser:*/${SAML:sub}"
                 ]
             },
             {
                 "Effect": "Allow",
                 "Action": [
                     "rds:DescribeDBInstances"
                 ],
                 "Resource": [
                     "arn:aws:rds:*:*:db:*"
                 ]
             }
         ]
     }
    disable
    : An unencrypted connection is used.
  • prefer: An SSL-encrypted connection is attempted. If the encrypted connection is unavailable, the unencrypted connection is used.

  • verify-ca: An SSL-encrypted connection must be used and a server certification verification against the provided CA certificates must pass.

  • verify-full: An SSL-encrypted connection must be used and a server certification verification against the provided CA certificates must pass. Additionally, the server hostname is checked against the certificate's names.

  • must be defined.
    Integration Owner
    must also be defined.
    Periodic User Cleanup & Deletion
    resource owner
    resource owners

    AWS Lambda Custom Integration

    Learn how to integrate an AWS Lambda Custom Integration with Apono

    AWS Lambda enables you to build and connect cloud services and internal web apps by writing single-purpose functions that are attached to events emitted from your cloud infrastructure and services.

    Its serverless architecture frees you to write, test, and deploy functions quickly without having to manage infrastructure setup.

    With this integration, you can connect your internal applications to AWS Lambda functions and manage access to those applications with Apono.


    hashtag
    Prerequisites

    Before starting this integration, create the items listed in the following table.

    Item
    Description
    chevron-rightSample Lambda Functionhashtag

    listResources

    Parameter
    Description


    hashtag
    Integrate an AWS Lambda Custom Integration

    circle-check

    You can also use the steps below to integrate with Apono using Terraform.

    In step 8, instead of clicking Confirm, follow the Are you integrating with Apono using Terraform? guidance.

    Follow these steps to complete the integration:

    1. On the tab, click AWS Lambda Custom Integration. The Connect Integration page appears.

    2. Under Discovery, click Next. The Apono connector section expands.

    3. From the dropdown menu, select a connector.

    circle-info

    If the desired connector is not listed, click + Add new connector and follow the instructions for creating an .

    1. Click Next. The Integration Config section expands.

    2. Define the Integration Config settings.

      Setting
      Description
    chevron-right💡Are you integrating with Apono using Terraform?hashtag

    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.

    Now that you have completed this integration, you can that grant permission to your AWS Lambda function.

    AWS RDS MySQL

    hashtag
    In this article

    Amazon RDS for MySQL is an open-source relational database management service in the cloud. Through AWS RDS MySQL integration, you will be able to integrate with AWS RDS MySQL:

    resources[]
    Parameter
    Description

    id

    Unique resource identifier in the source system (such as ARN) that you receive back in grantAccess or revokeAccess

    name

    Human-readable resource name to show in Apono

    type

    Resource type or service

    The value should always be the resource type (params.resource_type) that was passed in the request.

    metadata

    Tags or context associated with the resource

    Examples:

    • "environment" = "prod"

    • "region" = "us-east-1"

    permissions[]

    Parameter
    Description

    id

    Integration-defined permission key you will receive back later in grantAccess

    name

    Display name for the permission shown in Apono to the requester

    grantAccess

    Parameter
    Description

    username

    The Grantee’s email

    grant_id

    Apono’s unique ID for the request

    resources

    Resource IDs selected by the requester

    permission

    Permission ID chosen by the requester

    custom_parameters.param1 custom_parameters.param2

    Custom parameters defined for the Apono integration

    revokeAccess

    Parameter
    Description

    username

    The Grantee’s email

    grant_id

    Apono’s unique ID for the request

    resources

    Resources previously granted

    permission

    Permission to remove

    custom_parameters.param1 custom_parameters.param2

    Custom parameters defined for the Apono integration

    createCredentials

    Parameter
    Description

    username

    The Grantee’s email

    grant_id

    Apono’s unique ID for the grantee

    resources

    One or more target resources for which credentials should be created

    permission

    Permission to remove

    custom_parameters.param1 custom_parameters.param2

    Custom parameters defined for the Apono integration

    Key-value pairs to send to the lambda function For example, you can provide a lambda function with a redirect URL that is used for internal provisioning access and passed as part of the action requests.

    Region

    Region of the AWS Lambda instance

    Function Name

    Named of the AWS Lambda function

  • Click Next. The Get more with Apono section expands.

  • Define the Get more with Apono settings.

    Setting
    Description

    Credential Rotation

    (Optional) Number of days after which the database credentials must be rotated Learn more about the .

    User cleanup after access is revoked (in days)

    (Optional) Defines the number of days after access has been revoked that the user should be deleted

    Learn more about .

    Custom Access Details

    (Optional) Instructions explaining how to access this integration's resources 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 400 characters. To view the message as it appears to end users, click Preview.

    Integration Owner

  • Click Confirm.

  • Click to copy the code.
  • Make any additional edits.

  • Deploy the code in your Terraform.

  • Refer to Integration Config Metadataarrow-up-right for more details about the schema definition.

    Apono Connector

    On-prem connection serving as a bridge between your AWS Lambda functions and Apono Minimum Required Version: 1.4.1 Use the following steps to update an existing connector.

    Lambda Function

    Named function set up within AWS Lambdaarrow-up-right

    When creating the Lambda function, apply the tagarrow-up-right apono-connector-access: "true".

    See: Sample Lambda Function.

    resources[]

    Manageable resources to display in Apono that users can be granted access to

    Each item represents a single object the integration can grant or revoke access to.

    permissions[]

    Permissions to resources that can be granted to users, such as Read and Write

    Integration Name

    Unique, alphanumeric, user-friendly name used to identify this integration when constructing an access flow

    Catalogarrow-up-right
    AWS connector
    create access flows
    AWS Lambda Custom Integration tile
    function listResources(params) {
      return {
        resources: [
          {
            'id': 'resource1',
            'name': 'Resource 1',
            'type': params.resource_type,
            'metadata': {
              'key1': 'value1'
            }
          },
          {
            'id': 'resource2',
            'name': 'Resource 2',
            'type': params.resource_type,
            'metadata': {
              'key2': 'value2'
            }
          },
          {
            'id': 'resource3',
            'name': 'Resource 3',
            'type': params.resource_type,
            'metadata': {
              'key3': 'value3'
            }
          },
        ],
        permissions: [
          {
            'id': 'admin',
            'name': 'Admin'
          },
          {
            'id': 'reader',
            'name': 'Reader'
          }
        ]
      };
    }
    
    function grantAccess(params) {
      const username = params.username;
      const grantId = params.grant_id;
      const resources = params.resources;
      const permission = params.permission;
      
      const param1 = params.custom_parameters.param1
      const param2 = params.custom_parameters.param2
    
      console.log(param1)
      console.log(param2)
      
      return {
        status: 'ok'
      };
    }
    
    function revokeAccess(params) {
      const username = params.username;
      const grantId = params.grant_id;
      const resources = params.resources;
      const permission = params.permission;
    
      const param1 = params.custom_parameters.param1
      const param2 = params.custom_parameters.param2
      
      return {
        status: 'ok'
      };
    }
    
    function createCredentials(params) {
      const username = params.username;
      const grantId = params.grant_id;
      const resources = params.resources;
      
      const param1 = params.custom_parameters.param1
      const param2 = params.custom_parameters.param2
      
      return {
        status: 'ok'
      };
    }
    
    export const handler = async (event) => {
      const params = event.params;
      
      switch (event.event_type) {
        case 'create-credentials':
          return createCredentials(params);
        case 'list-resources':
          return listResources(params);
        case 'grant-access':
          return grantAccess(params);
        case 'revoke-access':
          return revokeAccess(params);
        case 'create-credentials':
          return {
            status: 'ok',
            secret: 'created-credentials-secret'
          }
        case 'reset-credentials':
          return {
            status: 'ok',
            secret: 'reset-credentials-secret'
          }
        default:
          return {
            status: 'active'
          };
      }
    };

    Custom Parameters

    Database
  • Table

  • Role

  • hashtag
    Prerequisites

    • If you already have AWS Apono connector:

      • Make sure the connector's minimum version is 1.5.3.

    • If you still don't have AWS Apono connector:

    hashtag
    Create AWS RDS MySQL Integration

    hashtag
    Generate Credentials

    Create user and grant permissions:

    circle-exclamation

    You can use only one authentication option on the RDS instance at a time.

    circle-info

    (MySQL 8.0+) Grant the service account the authority to manage other roles. This enables Apono to create, alter, and drop roles. However, this role does not inherently grant specific database access permissions.

    chevron-rightPassword Authenticationhashtag

    With password authentication, your database performs all administration of user accounts. You create users with SQL statements such as CREATE USER, with the appropriate clause required by the DB engine for specifying passwords.

    1. Get your AWS RDS DB details.

    1. Connect RDS MySQL.

    1. Create a username for the Apono connector. The username is arbitrary and can be set according to your preference.

    2. Replace USER_NAME and PASSWORD with your desired credentials.

    1. Grant the necessary permissions to the user.

    SHOW DATABASES Allows the user to view all databases in the RDS instance. CREATE USER Grants the ability to create new users. UPDATE Permits updates in the MySQL system database, including user privileges. PROCESS Allows viewing the server's process list, including all executing queries.

    1. (MySQL 8.0 and above) Grant the user the authority to manage roles by giving them the ROLE_ADMIN privilege. Starting with MySQL 8.0, the ROLE_ADMIN privilege is required to create roles, assign permissions to roles, and grant or revoke roles to or from users. This privilege does not inherently grant any specific database access permissions.

    chevron-rightIAM Authenticationhashtag

    You can authenticate to your DB instance using AWS Identity and Access Management (IAM) database authentication. With this authentication method, you don't need to use a password when you connect to a DB instance. Instead, you use an authentication token.

    1. Get your AWS RDS DB details.

    chevron-rightPassword Authenticationhashtag

    With password authentication, your database performs all administration of user accounts. You create users with SQL statements such as CREATE USER, with the appropriate clause required by the DB engine for specifying passwords.

    1. Get your AWS RDS DB details.

    chevron-rightPassword Authenticationhashtag

    With password authentication, your database performs all administration of user accounts. You create users with SQL statements such as CREATE USER, with the appropriate clause required by the DB engine for specifying passwords.

    1. Sign in to the AWS Management Console and open the Amazon RDS console , and choose your DB instance.

    hashtag
    Create Integration in Apono

    1. In the Apono admin consolearrow-up-right, go to the Integrations page and click the Add Integration button in the top-left side, or press on the Catalog blade.

    2. In the Catalog page search for and select AWS RDS MySQL.

    3. In Discovery step, select one or multiple AWS RDS MySQL resource types for Apono to discover.

    4. In Apono connector step, select the connector with the required permissions to be used with your AWS RDS MySQL.

    5. In Integration config step, provide the following information about your AWS RDS MySQL:

    Variable
    Value
    Required

    Integration Name

    The integration name.

    Yes

    Auth Type

    The authentication method for connecting to an AWS RDS instance, with options for password (username and password) or iam (IAM-based authentication).

    Yes

    Region

    AWS region where the RDS instance is located.

    Yes

    Instance ID

    The unique identifier of the AWS RDS instance.

    Yes

    1. In Secret Storearrow-up-right step, provide the connector credentials using one of the following secret store options:

      • AWSarrow-up-right

      • KUBERNETESarrow-up-right

    circle-info

    When using IAM authentication, a secret does not need to be created. The service account and its permissions are managed through IAM roles and policies. The service account is used to authenticate the MySQL instance instead of a secret.

    For the AWS RDS MySQL integration, use the following secret format: username:<The database username> password:<The user password>

    1. (Optional) In Get more with Apono step, you can set up the following:

    Setting
    Description

    Credential Rotation

    (Optional) Number of days after which the database credentials must be rotated Learn more about the .

    User cleanup after access is revoked (in days)

    (Optional) Defines the number of days after access has been revoked that the user should be deleted

    Learn more about .

    Custom Access Details

    (Optional) Instructions explaining how to access this integration's resources 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 400 characters. To view the message as it appears to end users, click Preview.

    Integration Owner

    (Optional) Fallback approver if no is found Follow these steps to define one or several integration owners:

    1. From the Attribute dropdown menu, select User or Group under the relevant identity provider (IdP) platform.

    2. From the Value dropdown menu, select one or multiple users or groups.

    NOTE: When Resource Owner is defined, an Integration Owner

    Resource Owner

    (Optional) Group or role responsible for managing access approvals or rejections for the resource Follow these steps to define one or several :

    1. Enter a Key name. This value is the name of the tag created in your cloud environment.

    2. From the Attribute dropdown menu, select an attribute under the IdP platform to which the key name is associated. 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.

    NOTE: When this setting is defined, an

    hashtag
    Next Steps

    Prerequisites
    Create AWS RDS MySQL Integration
    Next Steps
    aws rds describe-db-instances \
      --filters "Name=engine,Values=mysql" \
      --query "*[].[Endpoint.Address,Endpoint.Port]"
    
    mysql -h [Endpoint.Address] -P [Endpoint.Port] -u USER_NAME -p

    (Optional) Fallback approver if no resource owner is found Follow these steps to define one or several integration owners:

    1. From the Attribute dropdown menu, select User or Group under the relevant identity provider (IdP) platform.

    2. From the Value dropdown menu, select one or multiple users or groups.

    NOTE: When Resource Owner is defined, an Integration Owner must be defined.

    Resource Owner

    (Optional) Group or role responsible for managing access approvals or rejections for the resource Follow these steps to define one or several resource owners:

    1. Enter a Key name. This value is the name of the tag created in your cloud environment.

    2. From the Attribute dropdown menu, select an attribute under the IdP platform to which the key name is associated. 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.

    NOTE: When this setting is defined, an Integration Owner must also be defined.

    Credentials Rotation Policy
    Periodic User Cleanup & Deletion
    Enable IAM database authentication.
    1. Connect RDS MySQL.

    1. Create a username for the Apono connector. The username is arbitrary and can be set according to your preference.

    2. Replace USER_NAME with your desired credentials.

    1. Grant the necessary permissions to the user.

    SHOW DATABASES Allows the user to view all databases in the RDS instance. CREATE USER Grants the ability to create new users. UPDATE Permits updates in the MySQL system database, including user privileges. PROCESS Allows viewing the server's process list, including all executing queries.

    1. Add this policy to the connector role:

    1. To allow a user or role to connect to your DB instance, create the following IAM policy and attach it to your identity center permissions set or role.

    Connect RDS MySQL.

    1. Create a username for the Apono connector. The username is arbitrary and can be set according to your preference.

    2. Replace USER_NAME and PASSWORD with your desired credentials.

    1. Grant the necessary permissions to the user.

    SHOW DATABASES Allows the user to view all databases in the RDS instance. CREATE USER Grants the ability to create new users. UPDATE Permits updates in the MySQL system database, including user privileges. PROCESS Allows viewing the server's process list, including all executing queries.

    1. (MySQL 8.0 and above) Grant the user the authority to manage roles by giving them the ROLE_ADMIN privilege. Starting with MySQL 8.0, the ROLE_ADMIN privilege is required to create roles, assign permissions to roles, and grant or revoke roles to or from users. This privilege does not inherently grant any specific database access permissions.

    chevron-rightIAM Authenticationhashtag

    You can authenticate to your DB instance using AWS Identity and Access Management (IAM) database authentication. With this authentication method, you don't need to use a password when you connect to a DB instance. Instead, you use an authentication token.

    1. Get your AWS RDS DB details.

    1. Enable IAM database authentication.

    1. Connect RDS MySQL.

    1. Create a username for the Apono connector. The username is arbitrary and can be set according to your preference.

    2. Replace USER_NAME with your desired credentials.

    1. Grant the necessary permissions to the user.

    SHOW DATABASES Allows the user to view all databases in the RDS instance. CREATE USER Grants the ability to create new users. UPDATE Permits updates in the MySQL system database, including user privileges. PROCESS Allows viewing the server's process list, including all executing queries.

    1. Add this policy to the connector role:

    1. To allow a user or role to connect to your DB instance, create the following IAM policy and attach it to your identity center permissions set or role.

    Copy the following details:

    • Endpoint: The DNS name of the DB instance.

    • Port: The port number on which the DB instance accepts connections.

  • Connect to the DB instance using your SQL client using the copied details.

  • Create a user for the Apono connector. Replace USER_NAME and PASSWORD with your desired credentials.

    1. Grant the necessary permissions to the user.

    SHOW DATABASES Allows the user to view all databases in the RDS instance. CREATE USER Grants the ability to create new users. UPDATE Permits updates in the MySQL system database, including user privileges. PROCESS Allows viewing the server's process list, including all executing queries.

    1. (MySQL 8.0 and above) Grant the user the authority to manage roles by giving them the ROLE_ADMIN privilege. Starting with MySQL 8.0, the ROLE_ADMIN privilege is required to create roles, assign permissions to roles, and grant or revoke roles to or from users. This privilege does not inherently grant any specific database access permissions.

    chevron-rightIAM Authenticationhashtag

    You can authenticate to your DB instance using AWS Identity and Access Management (IAM) database authentication. With this authentication method, you don't need to use a password when you connect to a DB instance. Instead, you use an authentication token.

    1. Enable IAM database authentication

      1. Open the .

      2. In the navigation pane, choose Databases.

      3. Choose the DB instance that you want to modify.

      4. Make sure that the DB instance is compatible with IAM authentication. Check the compatibility requirements in Region and version availability.

      5. Choose Modify.

      6. In the Database authentication section, choose Password and IAM database authentication to enable IAM database authentication.

      7. Choose Password authentication or Password and Kerberos authentication to disable IAM authentication.

      8. Choose Continue.

      9. To apply the changes immediately, choose Immediately in the Scheduling of modifications section.

      10. Choose Modify DB instance.

    2. Copy the following RDS SQL details:

    • Endpoint: The DNS name of the DB instance.

    • Port: The port number on which the DB instance accepts connections.

    1. Connect to the DB instance using your SQL client using the copied details.

    2. Create a username for the Apono connector. The username is arbitrary and can be set according to your preference.

    3. Replace USER_NAME with your desired credentials.

    1. Grant the necessary permissions to the user.

    SHOW DATABASES Allows the user to view all databases in the RDS instance. CREATE USER Grants the ability to create new users. UPDATE Permits updates in the MySQL system database, including user privileges. PROCESS Allows viewing the server's process list, including all executing queries.

    1. Add this policy to the connector role:

    1. To allow a user or role to connect to your DB instance, create the following IAM policy and attach it to your identity center permissions set or role.

    must be defined.
    Integration Owner
    must also be defined.

    Credentials rotation period (in days)

    i.e.: 90

    No

    User cleanup after access is revoked (in days)

    i.e.: 90

    No

    Create Integration Access Flowarrow-up-right

    Install AWS Account connector on ECS using Terraform.arrow-up-right
    Install AWS Account connector on ECS using CloudFormation.arrow-up-right
    Install AWS Organization connector on ECS using Terraform.arrow-up-right
    Install AWS Organization connector on ECS using CloudFormation.arrow-up-right
    Install AWS Organization connector on EKS using Terraform.arrow-up-right
    AWS command-linearrow-up-right
    MySQL command-linearrow-up-right
    Amazon RDS consolearrow-up-right
    APONOarrow-up-right
    HASHICORParrow-up-right
    Credentials Rotation Policy
    Periodic User Cleanup & Deletion
    resource owner
    resource owners
    aws rds describe-db-instances \
      --filters "Name=engine,Values=mysql" \
      --query "*[].[DBInstanceIdentifier,Endpoint.Address,Endpoint.Port]"
    mysql -h [Endpoint.Address] -P [Endpoint.Port] -u USER_NAME -p
    CREATE USER 'USER_NAME'@'%' IDENTIFIED BY 'PASSWORD';
    GRANT SHOW DATABASES ON *.* TO 'USER_NAME'@'%';
    GRANT CREATE USER ON *.* TO 'USER_NAME'@'%';  
    GRANT UPDATE ON mysql.* TO 'USER_NAME'@'%';
    GRANT PROCESS ON *.* TO 'USER_NAME'@'%';
    GRANT SELECT ON *.* TO 'USER_NAME'@'%';
    GRANT GRANT OPTION ON *.* TO 'USER_NAME'@'%';
    GRANT EXECUTE,DROP,SELECT,ALTER,ALTER ROUTINE,CREATE,CREATE ROUTINE,CREATE TEMPORARY TABLES,CREATE VIEW,DELETE,INDEX,INSERT,TRIGGER,UPDATE ON *.* TO 'USER_NAME'@'%';  
    GRANT GRANT OPTION ON *.* TO 'USER_NAME'@'%';
    GRANT ROLE_ADMIN on *.* to USER_NAME;
    aws rds describe-db-instances \
      --filters "Name=engine,Values=mysql" \
      --query "*[].[DBInstanceIdentifier,Endpoint.Address,Endpoint.Port]"
    aws rds describe-db-instances \
      --filters "Name=engine,Values=mysql" \
      --query "*[].[Endpoint.Address,Endpoint.Port]"
    
    mysql -h [Endpoint.Address] -P [Endpoint.Port] -u USER_NAME -p
    aws rds modify-db-instance \
        --db-instance-identifier DBInstanceIdentifier \
        --apply-immediately \
        --enable-iam-database-authentication
    mysql -h [Endpoint.Address] -P [Endpoint.Port] -u USER_NAME -p
    CREATE USER USER_NAME IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS';
    GRANT SHOW DATABASES ON *.* TO 'USER_NAME'@'%';
    GRANT CREATE USER ON *.* TO 'USER_NAME'@'%';  
    GRANT UPDATE ON mysql.* TO 'USER_NAME'@'%';
    GRANT PROCESS ON *.* TO 'USER_NAME'@'%';
    GRANT SELECT ON *.* TO 'USER_NAME'@'%';
    GRANT EXECUTE,DROP,SELECT,ALTER,ALTER ROUTINE,CREATE,CREATE ROUTINE,CREATE TEMPORARY TABLES,CREATE VIEW,DELETE,INDEX,INSERT,TRIGGER,UPDATE ON *.* TO 'USER_NAME'@'%';  
    GRANT GRANT OPTION ON *.* TO 'USER_NAME'@'%';
    { "Version": "2012-10-17", "Statement": [ { "Action": "rds-db:connect", "Resource": "arn:aws:rds-db:::dbuser:*/USER_NAME", "Effect": "Allow" } ] }
    aws iam create-policy --policy-name RDSConnectPolicy --policy-document '{
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "rds-db:connect"
                ],
                "Resource": [
                    "arn:aws:rds-db:*:*:dbuser:*/${SAML:sub}"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "rds:DescribeDBInstances"
                ],
                "Resource": [
                    "arn:aws:rds:*:*:db:*"
                ]
            }
        ]
    }'
    mysql -h [Endpoint.Address] -P [Endpoint.Port] -u USER_NAME -p
    CREATE USER 'USER_NAME'@'%' IDENTIFIED BY 'PASSWORD';
    GRANT SHOW DATABASES ON *.* TO 'USER_NAME'@'%';
    GRANT CREATE USER ON *.* TO 'USER_NAME'@'%';  
    GRANT UPDATE ON mysql.* TO 'USER_NAME'@'%';
    GRANT PROCESS ON *.* TO 'USER_NAME'@'%';
    GRANT SELECT ON *.* TO 'USER_NAME'@'%';
    GRANT EXECUTE,DROP,SELECT,ALTER,ALTER ROUTINE,CREATE,CREATE ROUTINE,CREATE TEMPORARY TABLES,CREATE VIEW,DELETE,INDEX,INSERT,TRIGGER,UPDATE ON *.* TO 'USER_NAME'@'%';  
    GRANT GRANT OPTION ON *.* TO 'USER_NAME'@'%';
    GRANT ROLE_ADMIN on *.* to USER_NAME;
    CREATE USER 'USER_NAME'@'%' IDENTIFIED BY 'PASSWORD';
    GRANT SHOW DATABASES ON *.* TO 'USER_NAME'@'%';
    GRANT CREATE USER ON *.* TO 'USER_NAME'@'%';  
    GRANT UPDATE ON mysql.* TO 'USER_NAME'@'%';
    GRANT PROCESS ON *.* TO 'USER_NAME'@'%';
    GRANT SELECT ON *.* TO 'USER_NAME'@'%';
    GRANT EXECUTE,DROP,SELECT,ALTER,ALTER ROUTINE,CREATE,CREATE ROUTINE,CREATE TEMPORARY TABLES,CREATE VIEW,DELETE,INDEX,INSERT,TRIGGER,UPDATE ON *.* TO 'USER_NAME'@'%';  
    GRANT GRANT OPTION ON *.* TO 'USER_NAME'@'%';
    GRANT ROLE_ADMIN on *.* to USER_NAME;
    Amazon RDS consolearrow-up-right
    aws rds modify-db-instance \
        --db-instance-identifier DBInstanceIdentifier \
        --apply-immediately \
        --enable-iam-database-authentication
    mysql -h [Endpoint.Address] -P [Endpoint.Port] -u USER_NAME -p
    CREATE USER USER_NAME IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS';
    GRANT SHOW DATABASES ON *.* TO 'USER_NAME'@'%';
    GRANT CREATE USER ON *.* TO 'USER_NAME'@'%';  
    GRANT UPDATE ON mysql.* TO 'USER_NAME'@'%';
    GRANT PROCESS ON *.* TO 'USER_NAME'@'%';
    GRANT SELECT ON *.* TO 'USER_NAME'@'%';
    GRANT EXECUTE,DROP,SELECT,ALTER,ALTER ROUTINE,CREATE,CREATE ROUTINE,CREATE TEMPORARY TABLES,CREATE VIEW,DELETE,INDEX,INSERT,TRIGGER,UPDATE ON *.* TO 'USER_NAME'@'%';  
    GRANT GRANT OPTION ON *.* TO 'USER_NAME'@'%';
    { "Version": "2012-10-17", "Statement": [ { "Action": "rds-db:connect", "Resource": "arn:aws:rds-db:::dbuser:*/USER_NAME", "Effect": "Allow" } ] }
    aws iam create-policy --policy-name RDSConnectPolicy --policy-document '{
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "rds-db:connect"
                ],
                "Resource": [
                    "arn:aws:rds-db:*:*:dbuser:*/${SAML:sub}"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "rds:DescribeDBInstances"
                ],
                "Resource": [
                    "arn:aws:rds:*:*:db:*"
                ]
            }
        ]
    }'
    CREATE USER USER_NAME IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS';
    GRANT SHOW DATABASES ON *.* TO 'USER_NAME'@'%';
    GRANT CREATE USER ON *.* TO 'USER_NAME'@'%';  
    GRANT UPDATE ON mysql.* TO 'USER_NAME'@'%';
    GRANT PROCESS ON *.* TO 'USER_NAME'@'%';
    GRANT SELECT ON *.* TO 'USER_NAME'@'%';
    GRANT EXECUTE,DROP,SELECT,ALTER,ALTER ROUTINE,CREATE,CREATE ROUTINE,CREATE TEMPORARY TABLES,CREATE VIEW,DELETE,INDEX,INSERT,TRIGGER,UPDATE ON *.* TO 'USER_NAME'@'%';  
    GRANT GRANT OPTION ON *.* TO 'USER_NAME'@'%';
    { "Version": "2012-10-17", "Statement": [ { "Action": "rds-db:connect", "Resource": "arn:aws:rds-db:::dbuser:*/USER_NAME", "Effect": "Allow" } ] }
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
            "Action": [
              "rds-db:connect"
            ],
          "Resource": [
            "arn:aws:rds-db:*:*:dbuser:*/${SAML:sub}"
          ]
        },
        {
          "Effect": "Allow",
            "Action": [
              "rds:DescribeDBInstances"
            ],
            "Resource": [
              "arn:aws:rds:*:*:db:*"
            ]
          }
      ]
    }