|
1 | 1 | --- |
2 | | -title: 'OpenOpsApp AWS Role Stack' |
3 | | -description: 'How to set up the OpenOpssApp on AWS CloudFormation' |
4 | | -icon: 'aws' |
| 2 | +title: ‘AWS CloudFormation Role Stacks’ |
| 3 | +description: ‘How to set up AWS roles for OpenOps using CloudFormation’ |
| 4 | +icon: ‘aws’ |
5 | 5 | --- |
6 | 6 |
|
7 | | -import JoinCommunity from '/snippets/join-community.mdx' |
| 7 | +import JoinCommunity from ‘/snippets/join-community.mdx’ |
8 | 8 |
|
9 | | -The OpenOpsApp role stack for [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) is used to create the `OpenOpsApp` role in your AWS account. This will in turn provide the OpenOps platform with the necessary permissions to connect to your AWS resources. |
| 9 | +OpenOps provides [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) templates to create IAM roles in your AWS account with the necessary permissions to connect to your AWS resources. |
| 10 | + |
| 11 | +## OpenOpsApp Role Stack |
| 12 | + |
| 13 | +The OpenOpsApp role stack creates the `OpenOpsApp` role with permissions to run workflows from the OpenOps template catalog. |
10 | 14 |
|
11 | 15 | When creating the stack, you have the option to enable or disable certain permission sets. While the read-only permission set is mandatory, the rest are completely optional. The sets can also be enabled or disabled later by updating the stack. |
12 | 16 |
|
13 | | -## Installation |
| 17 | +### Installation |
14 | 18 |
|
15 | | -1. Navigate to CloudFormation on your AWS account, in the North Virginia (`us-east-1`) region. You can do so [by clicking here](https://us-east-1.console.aws.amazon.com/cloudformation/home?region=us-east-1). The stack **must** be created in the `us-east-1` region. |
16 | | -2. Click **Create stack**, then select **With new resources**: |
17 | | -  |
18 | | -3. In the **Amazon S3 URL** field, insert the following URL: `https://openops.s3.us-east-2.amazonaws.com/OpenOpsAppRoleStack.yml`, then click **Next**. |
19 | | -  |
20 | | -4. Give a name to the stack, such as `OpenOpsApp`. Enter an AWS account ID that you want OpenOps to use. Modify the permission sets if you like, then click **Next**. |
21 | | -5. Scroll down to the **Capabilities** section, acknowledge the creation of the necessary IAM roles, then click **Next**: |
| 19 | +1. **[Click here to create the stack](https://console.aws.amazon.com/cloudformation/home#/stacks/new?stackName=OpenOpsApp&templateURL=https://openops.s3.us-east-2.amazonaws.com/OpenOpsAppRoleStack.yml)** in the North Virginia (`us-east-1`) region. The stack **must** be created in the `us-east-1` region. |
| 20 | +2. On the **Specify stack details** page, enter an AWS account ID that you want OpenOps to use. Modify the permission sets if you like, then click **Next**. |
| 21 | +3. On the **Configure stack options** page, click **Next**. |
| 22 | +4. On the **Review and create** page, scroll down to the **Capabilities** section and acknowledge the creation of IAM roles: |
22 | 23 |  |
23 | | -6. In the **Review and create** view, scroll down and click **Submit**. The stack will be created, including the `OpenOpsApp` role and the requested permissions. |
| 24 | +5. Click **Submit**. The stack will be created, including the `OpenOpsApp` role and the requested permissions. |
24 | 25 |
|
25 | | -## Modification |
| 26 | +### Modification |
26 | 27 |
|
27 | 28 | You’re welcome to [download the stack](https://openops.s3.us-east-2.amazonaws.com/OpenOpsAppRoleStack.yml) and modify specific permissions according to your needs. Notice that some AWS components in the OpenOps workflows may not function properly as a result. |
28 | 29 |
|
| 30 | +## Benchmark Role Stack |
| 31 | + |
| 32 | +The Benchmark role stack creates a read-only `OpenOpsBenchmarkRole` specifically for running AWS cost optimization benchmarks. This stack includes: |
| 33 | + |
| 34 | +- **Compute Optimizer permissions** - Access to EC2, EBS, RDS, Lambda, ECS, and Auto Scaling Group recommendations |
| 35 | +- **Resource read access** - Read-only access to EC2, RDS, ELB, DynamoDB, CloudWatch, Cost Explorer, and CloudTrail |
| 36 | +- **Pricing API access** - Access to AWS pricing information |
| 37 | + |
| 38 | +### Installation |
| 39 | + |
| 40 | +1. **[Click here to create the stack](https://console.aws.amazon.com/cloudformation/home#/stacks/new?stackName=OpenOpsBenchmark&templateURL=https://openops.s3.us-east-2.amazonaws.com/OpenOpsBenchmarkRoleStack.yml)** in the North Virginia (`us-east-1`) region. |
| 41 | +2. On the **Specify stack details** page, enter the required parameters: |
| 42 | + - **TrustedAccountId** - AWS Account ID that will assume this role |
| 43 | + - **ExternalId** - (Optional but recommended) A unique identifier for security |
| 44 | +3. Click **Next** twice to reach the **Review and create** page. |
| 45 | +4. Scroll down to the **Capabilities** section and acknowledge the creation of IAM roles. |
| 46 | +5. Click **Submit**. The stack will create the `OpenOpsBenchmarkRole` with read-only permissions. |
| 47 | + |
| 48 | +### Usage with OpenOps |
| 49 | + |
| 50 | +After deploying the stack: |
| 51 | +1. Get the Role ARN from the CloudFormation outputs |
| 52 | +2. In OpenOps, go to Settings → Connections |
| 53 | +3. Create or edit an AWS connection and configure it to assume the role |
| 54 | +4. Run benchmark workflows from the template catalog |
| 55 | + |
| 56 | +### Security Considerations |
| 57 | + |
| 58 | +- This stack provides **read-only access only** - no write, modify, or delete permissions |
| 59 | +- An External ID is highly recommended to prevent the "confused deputy problem" |
| 60 | +- Follows the principle of least privilege, scoped only to services needed for benchmarking |
| 61 | + |
| 62 | +You can [download the Benchmark stack](https://openops.s3.us-east-2.amazonaws.com/OpenOpsBenchmarkRoleStack.yml) to review or modify the permissions. See the [CloudFormation example](https://github.com/openops-cloud/cloudformation-examples/tree/main/aws-benchmark-permissions) for more details. |
| 63 | + |
29 | 64 | <JoinCommunity /> |
0 commit comments