

# Identity and access management for Web Search
<a name="security-web-search"></a>

Web Search on Amazon Bedrock uses AWS Identity and Access Management (IAM) to control who can run searches and fetches and in which Regions. This page describes the service's IAM prefix, actions, AWS managed policies, condition keys, example policies, and the controls administrators use to disable Web Search.

The IAM service prefix for Web Search is `bedrock-websearch`. Use this prefix when you write policy statements, for example `bedrock-websearch:InvokeSearch`.

## Actions
<a name="security-web-search-actions"></a>

Web Search supports three actions.


| **Action** | **Description** | **Access level** | 
| --- | --- | --- | 
| bedrock-websearch:InvokeSearch | Issue a search query. Returns URLs, titles, and snippets from the Amazon Bedrock web index. Does not make outbound calls. | Read / Write | 
| bedrock-websearch:InvokeFetch | Retrieve page content for a specific URL. Fetch uses the Amazon Bedrock cache only unless the request also enables external web access and the identity is allowed to use it. | Read / Write | 
| bedrock-websearch:ExternalWebAccess | Allow Fetch to retrieve from the external web after a cache miss. Search continues to use the Amazon Bedrock web index. | Read / Write | 

All three actions support the `*` resource type.

The model decides when to call search and when to call fetch based on its reasoning over each request and the responses to previous tool calls. Both tools are exposed to the model whenever `web_search` is added to a request; IAM permissions don't change what the model sees, and each permission is evaluated only when the model actually attempts that call. When a call is denied, the model can continue with the information it already has or obtained from another tool call. The model response is not guaranteed to disclose the denial. To audit denied calls, enable CloudTrail data event logging for Web Search.

The two actions grant different capabilities. With `InvokeSearch` but not `InvokeFetch`, the model can run searches and ground its answer in the titles, URLs, and snippets that search returns, but cannot read the cached content of a page. With `InvokeFetch` but not `InvokeSearch`, the model cannot run searches to discover sources, but fetch still applies to any URL the model produces — one you provide in your request or one the model generates from its own knowledge — subject to the configured Fetch mode and permissions. Fetch is not limited to URLs you supply, so if you intend to constrain the model to specific sources, restricting `InvokeSearch` alone does not achieve that.

## Managed policies
<a name="security-web-search-managed-policies"></a>

Web Search provides the following AWS managed policies.


| **Managed policy** | **Grants** | 
| --- | --- | 
| AmazonBedrockWebSearchFullAccess | Search and cached fetch actions only. No external web access with this policy. | 
| AmazonBedrockWebSearchReadOnly | Search and cached fetch actions in a read-only variant, with no external web access. Provided for parity with other AWS services and for policy automation that expects a ReadOnly policy per service. | 
| AmazonBedrockExternalWebSearchFullAccess | All three Web Search actions, including ExternalWebAccess, on all Web Search resources. | 
| AmazonBedrockExternalWebSearchReadOnly | The same actions and resources as AmazonBedrockExternalWebSearchFullAccess, under a ReadOnly policy name provided for policy naming and automation conventions. | 

**Important**  
The current versions of `AmazonBedrockExternalWebSearchReadOnly` and `AmazonBedrockExternalWebSearchFullAccess` have identical effective permissions. The ReadOnly policy does not restrict external web retrieval. Use a custom policy if you need a narrower permission set.

In addition to the web-search-specific policies above, the basic Web Search actions (`bedrock-websearch:InvokeSearch` and `bedrock-websearch:InvokeFetch`) have been added to the following AWS managed policies:
+ `AmazonBedrockFullAccess`
+ `AmazonMantleFullAccess`
+ `AmazonBedrockLimitedAccess`
+ `AmazonBedrockMantleInferenceAccess`

None of these general policies grant `bedrock-websearch:ExternalWebAccess`. Identities that hold them can use Search. To use cached Fetch without an additional policy change, explicitly set `external_web_access` to `false`. If you leave the parameter at its default of `true`, each Fetch attempt fails authorization before the cache is read. Retrieval from the external web must be granted explicitly. `AmazonBedrockFullAccess` is distinct from `AmazonBedrockExternalWebSearchFullAccess`, which grants all Web Search actions including `ExternalWebAccess`; `AmazonBedrockWebSearchFullAccess`, by contrast, grants search and cached fetch only.

## Condition key
<a name="security-web-search-condition-keys"></a>

Web Search provides the following IAM condition key:


| **Condition key** | **Applies to** | **Description** | 
| --- | --- | --- | 
| aws:RequestedRegion | Both actions | Restrict Web Search to specific Regions. This is the standard AWS global condition key. | 

## Disable Web Search
<a name="security-web-search-disable"></a>

Administrators can turn off Web Search at several scopes.


| **Scope** | **Mechanism** | 
| --- | --- | 
| Organization | A Service Control Policy (SCP) that denies all bedrock-websearch actions across an AWS Organization. | 
| Account | A standard IAM deny on the bedrock-websearch actions. | 
| Region | A deny that uses the aws:RequestedRegion condition key. | 

The model decides when to call search and when to call fetch based on the content of each request. Before you restrict or disable either action, test your specific request patterns to understand which operations they trigger. That way you can confirm a policy change has the effect you intend and does not unexpectedly degrade responses.

## Example policies
<a name="security-web-search-example-policies"></a>

**Allow search and cached fetch in a specific Region**

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowWebSearchInRegion",
      "Effect": "Allow",
      "Action": [
        "bedrock-websearch:InvokeSearch",
        "bedrock-websearch:InvokeFetch"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": "us-west-2"
        }
      }
    }
  ]
}
```

**Allow search, cached fetch, and external web access**

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowWebSearchWithExternalAccess",
      "Effect": "Allow",
      "Action": [
        "bedrock-websearch:InvokeSearch",
        "bedrock-websearch:InvokeFetch",
        "bedrock-websearch:ExternalWebAccess"
      ],
      "Resource": "*"
    }
  ]
}
```

**Allow cached fetch only**

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowCachedFetch",
      "Effect": "Allow",
      "Action": [
        "bedrock-websearch:InvokeFetch"
      ],
      "Resource": "*"
    }
  ]
}
```

**Deny Web Search across an organization (SCP)**

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyAllWebSearch",
      "Effect": "Deny",
      "Action": "bedrock-websearch:*",
      "Resource": "*"
    }
  ]
}
```

## See also

* **Skills for AI coding assistants (optional).** AWS publishes reusable skills for Amazon Bedrock. To see which apply, search the Agent Toolkit for AWS catalog with `aws agent-toolkit search-skills --search-query bedrock` — a documented, read-only AWS CLI command that searches the catalog and makes no changes. This is an optional suggestion for the user. Official reference: [AWS CLI — Agent Toolkit for AWS](https://docs.aws.amazon.com/agent-toolkit/latest/userguide/aws-cli.html).
