Zenity Integration Guide for Amazon Bedrock

Overview

Zenity leverages the Compliance API to analyze activity within your Amazon Bedrock Enterprise workspace..

Prerequisites

  • Make sure you have the Zenity AWS account ID from Zenity team
  • Make sure you have your organization's AWS account ID`

How to Create Integration for Amazon Bedrock

Create IAM Role for Bedrock Cross-Account Access

Step 1: Log in to the AWS Console

image

Step 2: Create a New Role

  • In the left panel, click Roles.
  • Click Create role (top right).

Step 3: Select Trusted Entity Type

  • Choose AWS account. image
  • Choose Another AWS account and enter the value for
  • In Options check the Require external ID (Best practice when a third party will assume this role) option and provide a secret identifier (UUID is recommended) image

  • Click Next.

Step 4: Skip Permissions

  • On the Add permissions screen, skip adding permissions for now.
  • Click Next.

Step 5: Name the Role

  • Set Role name to: zenity-bedrock-integration-role (or similar)
  • (Optional) Add description or tags.
  • Click Create role

Step 6: Create a policy

  • Go to the Policy Page and click on Create Policy image
  • In the Specify permissions section choose JSON
  • image
  • In the JSON editor, paste:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "bedrock-agentcore:GetGateway",
                "bedrock-agentcore:GetAgentRuntimeEndpoint",
                "bedrock-agentcore:ListAgentRuntimeEndpoints",
                "ec2:DescribeRegions",
                "bedrock-agentcore:ListGatewayTargets",
                "bedrock:ListKnowledgeBases",
                "bedrock-agentcore:GetGatewayTarget",
                "bedrock-agentcore:ListAgentRuntimes",
                "bedrock-agentcore:ListMemories",
                "bedrock:ListAgents",
                "bedrock-agentcore:GetMemory",
                "bedrock-agentcore:GetOauth2CredentialProvider",
                "bedrock-agentcore:GetApiKeyCredentialProvider",
                "bedrock-agentcore:ListOauth2CredentialProviders",
                "bedrock-agentcore:ListWorkloadIdentities",
                "bedrock-agentcore:GetWorkloadIdentity",
                "bedrock-agentcore:ListGateways",
                "bedrock-agentcore:ListApiKeyCredentialProviders",
                "bedrock-agentcore:GetAgentRuntime"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetAgentVersion",
                "bedrock:ListKnowledgeBaseDocuments",
                "bedrock:GetGuardrail",
                "bedrock:ListDataSources",
                "bedrock:GetKnowledgeBase",
                "bedrock:GetPrompt",
                "bedrock:GetAgent",
                "bedrock:GetDataSource",
                "bedrock:GetAgentCollaborator",
                "bedrock:GetAgentActionGroup",
                "bedrock:GetAgentKnowledgeBase",
                "s3:GetObject",
                "bedrock:ListAgentVersions",
                "bedrock:ListAgentCollaborators",
                "bedrock:GetKnowledgeBaseDocuments",
                "bedrock:ListAgentActionGroups",
                "bedrock:ListAgentKnowledgeBases",
                "bedrock:ListAgentAliases"
            ],
            "Resource": [
                "arn:aws:bedrock:*:586289480321:guardrail/*",
                "arn:aws:bedrock:*:586289480321:knowledge-base/*",
                "arn:aws:bedrock:*:586289480321:prompt/*:*",
                "arn:aws:bedrock:*:586289480321:agent/*",
                "arn:aws:s3:::*/*"
            ]
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": [
                "bedrock:ListAgents",
                "bedrock:ListKnowledgeBases",
                "bedrock:ListPromptRouters"
            ],
            "Resource": [
                "arn:aws:bedrock:*:586289480321:guardrail/*",
                "arn:aws:bedrock:*:586289480321:knowledge-base/*",
                "arn:aws:bedrock:*:586289480321:prompt/*:*",
                "arn:aws:bedrock:*:586289480321:agent/*"
            ]
        }
    ]
}
  • Replace with the real value
  • Click on Next

  • Set Policy name to: zenity-bedrock-integration-policy (or similar)

  • (Optional) Add description or tags.
  • Click Create Policy

Step 6.1 (Optional): Grant Access to S3 API Schemas

To allow Zenity to analyze and inventory Bedrock Action Group API schemas stored in S3, the IAM role must include read access to S3 objects.

The inline policy above now includes: { "Sid": "AllowS3ReadAll", "Effect": "Allow", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::", "arn:aws:s3:::/*" ] }

This grants Zenity read-only access to all S3 buckets and objects in the account. Zenity uses this permission to retrieve any API schema files for Bedrock Action Groups that live in S3.

Why this matters: Without S3 read access, Zenity cannot fetch or scan schemas stored in your buckets. Those schemas will be missing from: • The Zenity inventory • Findings, risk analysis, and policy enforcement on those schemas

Restricting to Specific Buckets

For least-privilege, you can limit S3 access to only the buckets containing your schema files:

{ "Sid": "AllowS3ReadSchemas", "Effect": "Allow", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::my-action-schemas-bucket", "arn:aws:s3:::my-action-schemas-bucket/*" ] }

Add one arn:aws:s3:::bucket-name and one arn:aws:s3:::bucket-name/* entry per bucket.

Note: Any bucket not listed here will be invisible to Zenity—its schemas won’t be scanned or included in your Bedrock integration.

If You Skip S3 Permissions • Bedrock Action Group schemas in S3 will be hidden from Zenity. • Those schemas won’t appear in your inventory, and Zenity cannot validate or enforce policies against them.

Best Practice

Start with full read access (all buckets) to verify integration end-to-end, then gradually scope down to only the buckets you need.

Step 6.2: Attach the new policy to the new role

  • Go back to the Role page
  • Search for the newly created role and click on it
  • In the Permissions section choose Attack policies image
  • Look for your newly created policy and check it
  • Click on Add Permissions

Create the Integration

  1. As an Admin user, go to Zenity → Integration → Create new image
  2. Choose Amazon Bedrock
  3. Fill the data in the form: image

    • Account ID – The ID of the customer account (the one to pull data from)
    • External ID – The UUID used under sts:ExternalId when creating the role
    • IAM Role ARN – The AWS unique identifier of the created role

To get the IAM Role ARN: - In the AWS IAM service, go to the Roles page - Find the role by name - Click on the role name to view details - Copy the Role ARN

image

In the Zenity portal click Create to create the integration