# AWS S3 Splunk Integration

## **Overview**

To establish an integration between Splunk and Cisco Identity Intelligence, please refer to the setup guide section in this document. This integration method utilizes the Splunk Add-on for AWS to ingest log data from your AWS S3 bucket. This method is frequently employed for batch processing of historical or high-volume log data. It requires setting up AWS credentials and the accurate specification of the SQS queue region and URL.

## **Prerequisites**

Before you begin, please ensure you have the following:

1. Administrative access to your **Cisco Identity Intelligence**
2. Administrative access to your **Splunk Enterprise** or **Splunk Cloud**
3. The [**Cisco Security Cloud**](https://splunkbase.splunk.com/app/7404) **application** installed from Splunkbase

{% hint style="info" %}
The minimum required version of the Cisco Security Cloud application is <mark style="color:$warning;">3.4.0 or higher</mark>
{% endhint %}

4. The Splunk Add-on for AWS **application** installed from Splunkbase
5. Appropriate permissions to manage AWS S3 buckets and Splunk data inputs

## **Setup Guide**

### Configure AWS S3

1. Create an S3 Bucket

   a. Go to the **Amazon S3** console

   b. Click **Create bucket**

   c. Provide a **name** for the bucket, such as "splunk-cii-demo-set-up"for this example.  Keep this name handy, it will be used throughout the setup process. &#x20;

   d. Click **Create bucket** to complete the process
2. Create an IAM Policy

   a. Navigate to **IAM** > **Policies** > **Create Policy**

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FJcKkk83VIqrAGYnDoRED%2Fimage1.png?alt=media&#x26;token=af7b2c60-a677-42fa-a36f-92b87e13ec75" alt=""><figcaption></figcaption></figure>

&#x20;       b. Select **JSON** in the policy editor and paste the following JSON:

{% hint style="info" %} <mark style="color:$warning;">**Note:**</mark> Replace `${BUCKET_NAME}` with a suitable name, such as `splunk-cii-demo-set-up`
{% endhint %}

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::${BUCKET_NAME}/*"
    }
  ]
}
```

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2F0nXcth3kQ7FHHENo0U60%2Fimage2.png?alt=media&#x26;token=3c52b88b-252a-4ccd-b7a9-5c5b6e3eb164" alt=""><figcaption></figcaption></figure>

&#x20;      c. Click Next and provide the policy with a name (In this example, we will use S3WritePolicy)

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FQyvecpG8R1maFazS4v7e%2Fimage3.png?alt=media&#x26;token=907b7946-9c93-4b75-b7f0-a17d01505044" alt=""><figcaption></figcaption></figure>

&#x20;     d. Click Create policy

3. Create an IAM Role

   a. Navigate to **IAM** > **Roles** > **Create Role**

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FpkZIZuM8VYtsgBoMk3Ua%2Fimage4.png?alt=media&#x26;token=30b79096-e4c5-4a12-bc10-2c3935a07b9e" alt=""><figcaption></figcaption></figure>

&#x20;    b. Select **Custom trust policy** and paste the following JSON:

{% hint style="info" %} <mark style="color:$info;">**Notes:**</mark> &#x20;

* Replace `${CII_ACCOUNT_ID}` with the Identity Intelligence account ID for Splunk 988897525199
* Replace `${UNIQUE_EXTERNAL_ID}` with the unique external ID can be any auto generated value, such as `any-autogenerated-id-value`
  {% endhint %}

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::${CII_ACCOUNT_ID}:root"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "sts:ExternalId": "${UNIQUE_EXTERNAL_ID}"
        }
      }
    }
  ]
}
```

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FiPvvtdLPwO23tgMrMVfb%2Fimage5.png?alt=media&#x26;token=3e94865d-a07b-4da4-b973-5fa1098ba224" alt=""><figcaption></figcaption></figure>

&#x20;    c. Click **Next**.

&#x20;    d. Attach the (S3WritePolicy) policy (created earlier)

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2Fq5mhulJFXndPqON8z7xU%2Fimage6.png?alt=media&#x26;token=fee01ed3-2387-42c3-9f7c-cd852daab930" alt=""><figcaption></figcaption></figure>

&#x20;    e. Provide the role with the name CrossAccountS3WriteRole (This name is required and must not be changed)

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FpBXsnIA8E75xgMaUlMxc%2Fimage7.png?alt=media&#x26;token=ba14fc29-cb26-48fb-9e80-1475a98d8c6e" alt=""><figcaption></figcaption></figure>

&#x20;     f. Click **Create role**

4. Update the S3 Bucket Policy

   a. Go to the **Amazon S3** console and select the **splunk-cii-demo-set-up** bucket.

   b. Navigate to the **Permissions** tab > **Bucket Policy > Edit**

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FTyUjgRWcNCOv305v72Ec%2Fimage8.png?alt=media&#x26;token=5f960a61-d3b0-48a2-a214-0144e075a5ef" alt=""><figcaption></figcaption></figure>

c. Paste the following JSON into the bucket policy editor:

**Notes:**

* Replace ${S3\_ACCOUNT\_ID} with your **AWS account ID**
* Replace ${ROLE\_NAME} with **CrossAccountS3WriteRole**
* Replace ${BUCKET\_NAME} with your bucket name, e.g. **splunk-cii-set-up**

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::${S3_ACCOUNT_ID}:role/${ROLE_NAME}"
      },
      "Action": [
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::${BUCKET_NAME}/*"
    }
  ]
}
```

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FeXyxH2J0IszlUG9hRQLm%2Fimage9.png?alt=media&#x26;token=1ab3d403-c3a9-48d0-afd9-4ab03fafabb1" alt=""><figcaption></figcaption></figure>

&#x20;     d. Save changes

5. Create an SNS Topic

   a. Go to the **Amazon SNS** console > **Create Topic**

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FhiuX3dbCgp9BFfQOobz2%2Fimage10.png?alt=media&#x26;token=ddfe47b0-63a2-47d0-86d6-cded0825c2b0" alt=""><figcaption></figcaption></figure>

&#x20;     b. Provide a name: SplunkSNS

&#x20;     c. In the **Access Policy**, select **Advanced** and paste the following JSON:  \
\
&#x20;     Note:  Replace `${BUCKET_NAME}` with your bucket name, e.g. splunk-cii-set-up

```json
{
  "Version": "2008-10-17",
  "Id": "PolicyForS3Access",
  "Statement": [
    {
      "Sid": "AllowS3Publish",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "SNS:Publish",
      "Resource": "*",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:s3:::${S3 BUCKET NAME}"
        }
      }
    }
  ]
}
```

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FOGgJvnXT8peDbAfp1XJp%2Fimage11.png?alt=media&#x26;token=f2a4a01e-8e02-4296-9cb8-3802c5def379" alt=""><figcaption></figcaption></figure>

&#x20;        d. Click **Create topic**

6\. Configure S3 Event Notifications for the SNS Topic

* Go to the **Amazon S3** console and select your splunk-cii-set-up bucket.
* Navigate to the **Properties** tab > **Event Notifications**

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FxiFzUtivcaDavEYVVnxj%2Fimage12.png?alt=media&#x26;token=cef0b7db-19bb-4674-bd57-d6ade5060c59" alt=""><figcaption></figcaption></figure>

* Click **Create event notification**
* Configure the event notification:
  * **Event name**: Provide any name.
  * **Prefix (optional)**: Use if you want to trigger events for specific folders.
  * **Event types**: Select **Put** and **Post**.
  * **Destination**: Select **SNS Topic** and choose SplunkSNS.

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FYwvNmixJ3FLKBO3rEsHS%2Fimage13.png?alt=media&#x26;token=3f4a1216-a8f6-4a47-87fe-c300648fd21a" alt=""><figcaption></figcaption></figure>

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FzoxBIg6uyRQwEhSzf77h%2Fimage14.png?alt=media&#x26;token=4c245be7-b51f-4312-8c44-446177f4d7fc" alt=""><figcaption></figcaption></figure>

* Save changes

7\. Create Two SQS Queues

* Create Dead-Letter Queue (DLQ):
  * Go to the **Amazon SQS** console > **Create Queue**
  * Provide the name: SplunkDLQ
  * Set **Visibility Timeout** to **300 seconds**
  * Click **Create Queue**

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FCVz7mngARAQmyBv3GHjL%2Fimage15.png?alt=media&#x26;token=5b8a9a4a-4455-4779-b409-1c72260cf7e3" alt=""><figcaption></figcaption></figure>

8. **Create Main Queue:**

* Go to the **Amazon SQS** console > **Create Queue**
* Provide the name: SplunkMain
* Set **Visibility Timeout** to **300 seconds**
* Under **Dead-letter queue**, select **Enable** and choose SplunkDLQ
* Click **Create Queue**

**Important**: Configure the SQS visibility timeout to prevent multiple inputs from receiving and processing messages in a queue more than once. Set your SQS visibility timeout to 5 minutes or longer. If the visibility timeout for a message is reached before the message is fully processed by the SQS-based S3 input, the message reappears in the queue and is retrieved and processed again, resulting in duplicate data)

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FFSCE3ImK6jWCnnyP8qZT%2Fimage16.png?alt=media&#x26;token=c7813e33-6bd5-4deb-9600-4bd431d85b35" alt=""><figcaption></figcaption></figure>

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FdEGWlRmir1qbHElEItMS%2Fimage17.png?alt=media&#x26;token=747385d1-1167-418e-9a34-cabd9de25922" alt=""><figcaption></figcaption></figure>

9\. Create an SNS Subscription for SQS

* Go to the **Amazon SNS** console > **Subscriptions** > **Create Subscription**.

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2F1M145IE36gvYYVa52a3P%2Fimage18.png?alt=media&#x26;token=e57d4325-6f8b-4509-8f5f-91427a84018c" alt=""><figcaption></figcaption></figure>

* Configure the subscription:
  * **Topic ARN**: Select SplunkSNS (created earlier)
  * **Protocol**: Select **Amazon SQS**
  * **Endpoint**: Select SplunkMain

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FVaZMFSANWFzb9hNL41hC%2Fimage19.png?alt=media&#x26;token=008c6ec0-dc6a-4637-95db-b8212e546711" alt=""><figcaption></figcaption></figure>

* Click **Create Subscription**.

10\. Generate Access Key and Secret Key

* Go to **IAM** > **Users** and select your user.
* Navigate to the **Security Credentials** tab.
* Under **Access Keys**, click **Create Access Key**.

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FRLqMZGHTutrmRefiBlfB%2Fimage20.png?alt=media&#x26;token=47550c8b-e4bf-4797-acec-33135663dab1" alt=""><figcaption></figcaption></figure>

* Select **Command Line Interface (CLI)** and follow the instructions.

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FRZEQVRStMdmwCRJwnMcY%2Fimage21.png?alt=media&#x26;token=c18a4675-d021-466e-a0ec-efd7b544426a" alt=""><figcaption></figcaption></figure>

* Download the .csv file containing the **Access Key ID** and **Secret Access Key**.

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FboF35nWC9quB8D4CmOv4%2Fimage22.png?alt=media&#x26;token=a8128731-4b2d-4821-8ed0-9ed31049fb9b" alt=""><figcaption></figcaption></figure>

### Configure Splunk

<mark style="color:$danger;">Note:</mark> Starting September 2025, <mark style="color:$warning;">CII no longer provides the audience value when creating an API client.</mark> However, the audience field is still required in the Splunk application. Until the application is updated, please use the default audience value [`https://api.oort.io`](https://api.oort.io/) for this field. We will update this documentation once the application no longer requires an audience value.

1. Log in to Splunk.
2. Under Apps, click **Cisco Security Cloud**.
3. On the Application Setup page, click **Configure Application**.

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FeIIyy8A74pdj2hrdbmHO%2F492132.jpg?alt=media&#x26;token=7e159add-c089-4e1e-a9b3-febb856dbb2e" alt=""><figcaption></figcaption></figure>

1. When prompted, enter the following values:

* **AWS Access Key ID**: From the .csv file.
* **AWS Secret Access Key**: From the .csv file.
* **SQS Queue URL**: Go to the **Amazon SQS** console, select SplunkMain, and copy the queue URL.
* **External ID**: Use the any-autogenerated-id-value (UNIQUE\_EXTERNAL\_ID) specified earlier.
* **S3 Bucket URL**: Enter a value in the format s3:// *bucket-name*.s3. *region-code*.amazonaws.com. You got this value in the previous section.
* **S3 Bucket Region: The** AWS region where your S3 bucket is hosted (e.g., us-east-1).

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FFjM4FWOBwhTk88mgREq4%2FScreenshot%202025-11-06%20at%208.41.42%E2%80%AFAM.png?alt=media&#x26;token=225c55fe-15ee-4ed5-8e27-e5db566c4615" alt=""><figcaption></figcaption></figure>

## **Troubleshooting**

**In Splunk:**

1. Navigate to **Apps** in Splunk and open the **Splunk Add-on for AWS**.
2. Go to the **Inputs** tab and verify if a new input named test\_splunk\_demo has been created.

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FcyDZYx5LFldhtQEGiIoi%2Fimage24.png?alt=media&#x26;token=cfb804e2-8de7-47ce-9219-cbd779b800b6" alt=""><figcaption></figcaption></figure>

3. Select the **Account** tab and find the entry for test\_splunk\_demo.

   a. Ensure the account details are correct and match the credentials used during the integration setup.

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FN4l9daVRXxXd4atzi8Mr%2Fimage25.png?alt=media&#x26;token=20264c3c-de1a-45bf-904c-fd4f8a3b084a" alt=""><figcaption></figcaption></figure>

**In AWS S3:**

1. **Check the S3 Bucket**:

   a. Log in to your AWS console and go to the **S3** service.

   b. Locate the bucket named splunk-cii-demo-set-up (or the bucket name used during the integration setup).
2. **Verify Data in the S3 Bucket**:

   a. Check if data appears in the bucket after clicking **Test Connectivity** in Identity Intelligence.

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FPypVy4VN55yb772EMmdy%2Fimage26.png?alt=media&#x26;token=8a052200-96aa-4bf0-be0a-0493d6240b40" alt=""><figcaption></figcaption></figure>
