如何保护 AWS CloudFormation 堆栈不被删除?
How to protect an AWS CloudFormation stack from deletion?
我有一个创建三层应用程序的堆栈。我想保护我的堆栈不被意外删除。有什么方法可以保护 AWS CloudFormation 堆栈吗?
我还想知道,即使我的堆栈被删除,我如何才能停止与堆栈关联的资源被删除。
有多种方法可以保护由 AWS CloudFormation 创建的资源。
保护堆栈
AWS CloudFormation 采用描述所需资源的模板并将其部署为 堆栈 资源。删除堆栈时,资源也会被删除。
所以,第一种方法是控制哪些用户有删除堆栈的权限。这可以通过 身份和访问管理 (IAM).
分配
这是 Controlling Access with AWS Identity and Access Management 文档中的示例:
A sample policy that denies the delete and update stack actions for the MyProductionStack:
{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Deny",
"Action":[
"cloudformation:DeleteStack",
"cloudformation:UpdateStack"
],
"Resource":"arn:aws:cloudformation:us-east-1:123456789012:stack/MyProductionStack/*"
}]
}
策略还可以 require use of a Multi-factor Authentication (MFA) code 在执行敏感操作(例如删除堆栈)之前。
保护资源
CloudFormation 创建的资源仍然可以由具有适当权限的任何用户deleted/modified使用。因此,保护重要资源免受未授权用户的影响非常重要。 AWS 建议授予最低权限,以便用户只能控制他们需要的资源,而不能控制更多。
CloudFormation 删除政策
删除策略定义了在删除堆栈时应该不删除的资源。
来自CloudFormation documentation:
With the DeletionPolicy
attribute you can preserve or (in some cases) backup a resource when its stack is deleted. You specify a DeletionPolicy
attribute for each resource that you want to control. If a resource has no DeletionPolicy
attribute, AWS CloudFormation deletes the resource by default.
To keep a resource when its stack is deleted, specify Retain
for that resource. You can use retain for any resource. For example, you can retain an Amazon S3 bucket or an Amazon EC2 instance so that you can continue to use or modify those resources after you delete their stacks.
这通常用于在有意删除堆栈后保留资源。例如,保留 Amazon S3 存储桶或 Amazon RDS 数据库。但是,即使堆栈被意外删除,它也可以用于保留资源。
我有一个创建三层应用程序的堆栈。我想保护我的堆栈不被意外删除。有什么方法可以保护 AWS CloudFormation 堆栈吗?
我还想知道,即使我的堆栈被删除,我如何才能停止与堆栈关联的资源被删除。
有多种方法可以保护由 AWS CloudFormation 创建的资源。
保护堆栈
AWS CloudFormation 采用描述所需资源的模板并将其部署为 堆栈 资源。删除堆栈时,资源也会被删除。
所以,第一种方法是控制哪些用户有删除堆栈的权限。这可以通过 身份和访问管理 (IAM).
分配这是 Controlling Access with AWS Identity and Access Management 文档中的示例:
A sample policy that denies the delete and update stack actions for the MyProductionStack:
{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Deny",
"Action":[
"cloudformation:DeleteStack",
"cloudformation:UpdateStack"
],
"Resource":"arn:aws:cloudformation:us-east-1:123456789012:stack/MyProductionStack/*"
}]
}
策略还可以 require use of a Multi-factor Authentication (MFA) code 在执行敏感操作(例如删除堆栈)之前。
保护资源
CloudFormation 创建的资源仍然可以由具有适当权限的任何用户deleted/modified使用。因此,保护重要资源免受未授权用户的影响非常重要。 AWS 建议授予最低权限,以便用户只能控制他们需要的资源,而不能控制更多。
CloudFormation 删除政策
删除策略定义了在删除堆栈时应该不删除的资源。
来自CloudFormation documentation:
With the
DeletionPolicy
attribute you can preserve or (in some cases) backup a resource when its stack is deleted. You specify aDeletionPolicy
attribute for each resource that you want to control. If a resource has noDeletionPolicy
attribute, AWS CloudFormation deletes the resource by default.To keep a resource when its stack is deleted, specify
Retain
for that resource. You can use retain for any resource. For example, you can retain an Amazon S3 bucket or an Amazon EC2 instance so that you can continue to use or modify those resources after you delete their stacks.
这通常用于在有意删除堆栈后保留资源。例如,保留 Amazon S3 存储桶或 Amazon RDS 数据库。但是,即使堆栈被意外删除,它也可以用于保留资源。