For the complete documentation index, see llms.txt. This page is also available as Markdown.

Session Audit Implementation

Configure the connector, storage, and integrations required for auditing privileged access sessions

Session Audit captures privileged access session activity after the required connector, network, storage, and integration settings are configured. This article walks through the setup required to enable it.


Prerequisites

Item
Description

Supported integration

One of the following Apono integrations:

Apono connector

On-prem connection serving as a bridge between the integration and Apono

Required Version: 1.8.3

Learn how to update an existing AWS or Kubernetes connector.

Connector endpoint

DNS address used to establish audited sessions through the connector proxy

Network access

Client machines must be able to resolve the connector endpoint and connect to port 10021 (Kubernetes) or 10022 (SSH).

Kubernetes Command Line Tool (kubectl)

(Kubernetes) Command-line tool used for communicating with a Kubernetes cluster's control plane

For audited Kubernetes sessions, kubectl 1.24 or later is supported on macOS, Linux, and Windows.


Connector configuration

The Apono connector should be configured according to your deployment type:

Follow these steps to configure the connector:

  1. Verify AWS Load Balancer Controller is installed on the EKS cluster.

If it is not installed, install the AWS Load Balancer Controller before continuing.

  1. Obtain the EKS cluster OIDC provider.

  1. Save the following trust policy as apono-connector-trust-policy.json.

The connector uses IAM Roles for Service Accounts (IRSA) so its EKS pods can access AWS services through this IAM role. The following trust policy allows only the connector service account in this namespace to assume the role via OIDC.

Replace <AWS_ACCOUNT_ID>, <OIDC_PROVIDER>, and <NAMESPACE> before saving the file. The OIDC provider value should not include https://.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::<AWS_ACCOUNT_ID>:oidc-provider/<OIDC_PROVIDER>"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "<OIDC_PROVIDER>:sub": "system:serviceaccount:<NAMESPACE>:apono-connector-service-account"
        }
      }
    }
  ]
}
  1. Create or update the IAM role trust policy.

  1. Confirm that the role trust policy is configured correctly.

  1. Create and attach the S3 write policy to the role created or updated above.

  2. Add the following configuration to your Helm values file, for example values.yaml. The proxyService block provisions a Network Load Balancer (NLB) that exposes the Apono connector on ports 10020-10024.

lightbulb
  1. Upgrade the Apono connector Helm chart to v2.0.34 with the values file.

  1. Annotate the connector service account with the IAM role ARN so the connector can authenticate to S3.

  1. Verify that your VPN, security groups, and internal DNS allow developer machines to resolve and connect to the NLB DNS name on port 10021 (Kubernetes) or 10022 (SSH).

The NLB is provisioned as internal by default.

Create a policy

Follow these steps:

  1. Save the following S3 write policy locally as apono-connector-s3-session-audit-policy.json.

The organization ID can be found in the CloudFormation stack.

  1. Create the policy in AWS. The output will include a policy ARN that resembles: arn:aws:iam::<AWS_ACCOUNT_ID>:policy/apono-connector-s3-session-audit-policy.

  1. Copy the ARN. This will be used to attach the policy to the IAM role.

  2. Attach the policy to the existing connector IAM role.

  1. Tag the connector IAM role so it matches the aws:PrincipalTag/apono-connector-s3-access condition in the S3 policy.

Without this tag, the connector role can be denied S3 access, even after the policy is attached.

Create an S3 bucket

Follow these steps:

  1. Set the bucket variables.

  1. Create the region-specific S3 bucket.

lightbulb
  1. Block public access on the S3 bucket.

  1. Set ownership controls to BucketOwnerEnforced .

  1. Enable default server-side encryption with SSE-S3 (AES256). For SSE-KMS, replace the encryption configuration with your approved customer-managed, KMS key configuration.

  1. Enable versioning.

  1. Tag the bucket.

  1. (Recommended) Configure Object Lock retention according to your organization’s audit log retention policy.

This step applies only if Object Lock was enabled when the bucket was created in step 2.

Object Lock retention helps protect session audit data from being deleted or overwritten for a defined period.

  1. If the bucket and Apono connector are not in the same AWS account, or if your same-account deployment requires an explicit bucket policy, save the following bucket policy locally as apono-session-audit-bucket-policy.json.

Same-account deployments do not always require an additional bucket policy. However, one may still be required if access is restricted by an existing bucket policy, key policy, organization guardrail, or other control.

Additionally, the organization ID can be found in the CloudFormation stack.

  1. Apply the bucket policy from the AWS account that owns the S3 bucket to grant the Apono connector permissions to the bucket.

  1. Confirm that the bucket policy was applied.

⬆️ Return to EKS or ECS.


Enable Session Audit

You must enable Session Audit within the Apono connector and the SSH or Kubernetes integration.

Once the connector configuration is completed, notify your Apono contact to enable the feature together.

After Session Audit has been enabled, you can review and download session information from the Session History tab.

Connector enablement

Edit the connector page

Follow these steps to enable Session Audit for the connector:

  1. On the Connectors tab, in the row of the Apono connector associated with the integration, click ︙ > Edit. The Edit Connector page appears.

  2. Toggle Audit sessions to ON. The toggle will appear green when enabled.

  3. Under Session History Bucket ARN, enter your S3 bucket ARN.

  4. Enter the Connector Endpoint.

  5. Click Update Connector.

Integration enablement

Audit sessions toggle

Follow these steps to enable Session Audit for the integration:

  1. On the Connected tab, in the row of your SSH or Kubernetes integration, click ︙ > Edit. The Edit Integration page appears.

  2. Under Get more with Apono, toggle Audit sessions to ON. The toggle will appear green when enabled.

Last updated

Was this helpful?