Skip to content
GitHubXDiscordRSS

SecurityPolicy

Learn how to create, update, and manage AWS OpenSearchServerless SecurityPolicys using Alchemy Cloud Control.

The SecurityPolicy resource lets you manage AWS OpenSearchServerless SecurityPolicys for controlling access to your OpenSearch resources.

Create a basic security policy with the required properties and a description.

import AWS from "alchemy/aws/control";
const securityPolicy = await AWS.OpenSearchServerless.SecurityPolicy("basicSecurityPolicy", {
Name: "MyBasicSecurityPolicy",
Policy: JSON.stringify({
Version: "2012-10-17",
Statement: [
{
Effect: "Allow",
Action: "es:*",
Resource: "*"
}
]
}),
Type: "ALLOW",
Description: "A basic security policy allowing all actions on all resources."
});

Define a more complex security policy with specific actions and resources.

const advancedSecurityPolicy = await AWS.OpenSearchServerless.SecurityPolicy("advancedSecurityPolicy", {
Name: "MyAdvancedSecurityPolicy",
Policy: JSON.stringify({
Version: "2012-10-17",
Statement: [
{
Effect: "Allow",
Action: [
"es:ESHttpPut",
"es:ESHttpPost"
],
Resource: "arn:aws:es:us-west-2:123456789012:domain/MyDomain/*"
},
{
Effect: "Deny",
Action: "es:*",
Resource: "arn:aws:es:us-west-2:123456789012:domain/MyDomain/sensitive-data/*"
}
]
}),
Type: "ALLOW",
Description: "An advanced security policy allowing specific actions and denying access to sensitive data."
});

If you want to adopt an existing security policy instead of failing when it already exists, set the adopt property to true.

const existingPolicy = await AWS.OpenSearchServerless.SecurityPolicy("adoptExistingPolicy", {
Name: "MyExistingSecurityPolicy",
Policy: JSON.stringify({
Version: "2012-10-17",
Statement: [
{
Effect: "Allow",
Action: "es:*",
Resource: "*"
}
]
}),
Type: "ALLOW",
adopt: true, // Adopt existing resource if it exists
Description: "This policy will be adopted if it already exists."
});

Create a security policy that restricts access to a specific IP range.

const ipRestrictedPolicy = await AWS.OpenSearchServerless.SecurityPolicy("ipRestrictedPolicy", {
Name: "MyIPRestrictedPolicy",
Policy: JSON.stringify({
Version: "2012-10-17",
Statement: [
{
Effect: "Allow",
Action: "es:*",
Resource: "*",
Condition: {
IpAddress: {
"aws:SourceIp": "192.168.1.0/24"
}
}
}
]
}),
Type: "ALLOW",
Description: "A security policy that restricts access to a specific IP range."
});