`

aws策略!

阅读更多

目前正运维一个构筑于aws上的系统,客户将此系统交与我们运维的时候,给了一个类似于根用户的账户给我们,我们也一直用这个账户进行运维,此系统包括两个环境一个是商用环境还有一个是检证环境,为了省钱,检证环境只在工作时间内开启,每天下班之前需要将检证环境的机器关闭。就这样,我们用管理员用户运维了一年半以上了,中间发生了好几次比较严重的问题。。。。比如,关闭检证环境机器的时候,不小心点到了商用环境的db,这可是很严重的问题。。。幸亏这个客户,还不是那么苛刻。。。真是捏了好几次汗。。。。于是下定决心,一定要将这个权限规划规划好。。。。

 

前两天,简单学习了一下aws的策略,特作此笔记。

 

在aws中有两种方法指定资源,然后对指定资源进行分配权限。

Resource

1.代表所有资源

"Resource": [

        "*"

      ]

2.指定资源,可以是指定实例,也可以是lb。。。。

 "Resource": [

        "arn:aws:ec2:ap-northeast-1:account:instance/instanceid1",

        "arn:aws:ec2:ap-northeast-1:account:instance/instanceid2",

        "arn:aws:ec2:ap-northeast-1:account:instance/instanceid3",

        "arn:aws:ec2:ap-northeast-1:account:instance/instanceid4"

      ]

 

condition

主要原理就是为资源定义tag,通过指定tag来指定资源

 "Condition": {

                "StringLike": {

                    "ec2:ResourceTag/Name2": [

                        "pro-app*",

                        "st-*"

                    ]

                },

                "StringNotEquals": {

                    "ec2:ResourceTag/Name2": [

                        "pro-app01",

                        "pro-app02"

                    ]

                }

            }

 

如何解决上面的矛盾,刚开始我是这样想的,将检证环境和商用环境分开,也就是再创建一个IAM用户,该用户专门用于检证环境的操作,该用户拥有的权限很简单,仅查看和操作检证环境的四台机器。但是经过多次尝试,我并未成功,当我为指定资源分配读权限的时候,我所有的读权限都没有了,不可以访问任何资源。找了很多资料,原因就是,对于Resource而言,并不是对所有的接口都支持的控制的,比如对ec2的describe*这个接口就不支持。所以使用resource指定资源,目前是没有办法实现的,那么通过condition指定被操作资源是不是可以呢?我也是调查了一番,没有找到实现的方法,于是就放弃了。

 

 

改变初衷,对于新创建的IAM用户而言,他虽然可以看到商用环境的资源,但是没有办法做任何操作,比如创建实例,删除实例,关闭实例等等。。。。于是有了下面的策略。

基于resource实现:

   "Version": "2012-10-17",

   "Statement": [

      {

      "Effect": "Allow",

      "Action": [

         "elasticloadbalancing:Describe*",

         "ec2:DescribeInstances",

         "ec2:DescribeAvailabilityZones",

         "ec2:DescribeSubnets",

         "cloudwatch:DescribeAlarms"

      ],

      "Resource": "*" //对于常用资源的describe,均允许

      },

      { 

      "Effect": "Allow",

      "Action": [

         "elasticloadbalancing:DeregisterInstancesFromLoadBalancer",

         "elasticloadbalancing:RegisterInstancesWithLoadBalancer"

//在lb加入实例和去除实例

       ],

      "Resource": [

       "arn:aws:elasticloadbalancing:ap-northeast-1:account:loadbalancer/st",

       "arn:aws:elasticloadbalancing:ap-northeast-1:account:loadbalancer/pro"

//对于商用和检证的lb都可以做上面的操作

       ]

      },

      {

      "Action": [

        "ec2:describe*"

//ec2下的所有的describe操作都可以被允许

      ],

      "Resource": [

        "*"

//所有ec2资源

      ],

      "Effect": "Allow"

     },

    {

      "Action": [

        "ec2:RebootInstances",

        "ec2:StartInstances",

        "ec2:StopInstances"

//可以执行的操作

      ],

      "Resource": [

        "arn:aws:ec2:ap-northeast-1:account:instance/instance_id1",

        "arn:aws:ec2:ap-northeast-1:account:instance/instance_id2",

        "arn:aws:ec2:ap-northeast-1:account:instance/instance_id3",

        "arn:aws:ec2:ap-northeast-1:account:instance/instance_id4"

//对于指定资源可以执行上面的操作

      ],

      "Effect": "Allow"

    },

{

//rds的只读操作

      "Action": [

        "rds:Describe*",

        "rds:ListTagsForResource",

        "ec2:DescribeAccountAttributes",

        "ec2:DescribeAvailabilityZones",

        "ec2:DescribeSecurityGroups",

        "ec2:DescribeVpcs"

      ],

      "Effect": "Allow",

      "Resource": "*"

    },

    {

      "Action": [

        "cloudwatch:GetMetricStatistics",

        "logs:DescribeLogStreams", 

        "logs:GetLogEvents"

      ],

      "Effect": "Allow",

      "Resource": "*"

    }

]

}

基于condition实现

{

    "Version": "2012-10-17",

    "Statement": [

        {

            "Effect": "Allow",

            "Action": [

                "elasticloadbalancing:Describe*",

                "ec2:DescribeInstances",

                "ec2:DescribeAvailabilityZones",

                "ec2:DescribeSubnets",

                "cloudwatch:DescribeAlarms"

            ],

            "Resource": "*"

        },

        {

            "Effect": "Allow",

            "Action": [

                "elasticloadbalancing:DeregisterInstancesFromLoadBalancer",

                "elasticloadbalancing:RegisterInstancesWithLoadBalancer"

            ],

            "Resource": [

                "arn:aws:elasticloadbalancing:ap-northeast-1:account:loadbalancer/st",

                "arn:aws:elasticloadbalancing:ap-northeast-1:account:loadbalancer/pro"

            ]

        },

        {

            "Action": [

                "ec2:describe*"

            ],

            "Resource": [

                "*"

            ],

            "Effect": "Allow"

        },

        {

            "Action": [

                "ec2:RebootInstances",

                "ec2:StartInstances",

                "ec2:StopInstances"

            ],

            "Resource": [

                "arn:aws:ec2:ap-northeast-1:account:instance/*"

            ],

            "Effect": "Allow",

//使用condition来判断哪些资源可以被执行上面的操作

            "Condition": {

                "StringLike": {

                    "ec2:ResourceTag/Name2": [

                        "pro-app*",

                        "st-*"

                    ]

                },

//这两个condition之间是并且的关系

                "StringNotEquals": {

                    "ec2:ResourceTag/Name2": [

                        "pro-app01",

                        "pro-app02"

                    ]

                }

            }

        },

//rds的只读

        {

            "Action": [

                "rds:Describe*",

                "rds:ListTagsForResource",

                "ec2:DescribeAccountAttributes",

                "ec2:DescribeAvailabilityZones",

                "ec2:DescribeSecurityGroups",

                "ec2:DescribeVpcs"

            ],

            "Effect": "Allow",

            "Resource": "*"

        },

        {

            "Action": [

                "cloudwatch:GetMetricStatistics",

                "logs:DescribeLogStreams",

                "logs:GetLogEvents"

            ],

            "Effect": "Allow",

            "Resource": "*"

        }

    ]

}

分享到:
评论

相关推荐

    AWS SAA Question Answer

    - **AWS IAM**:AWS Identity and Access Management (IAM) 是一种服务,用于管理访问AWS服务和资源的安全策略。它并不提供资源利用率或性能方面的监控。 - **Amazon SNS**:Amazon Simple Notification Service ...

    AWS自学总结.docx

    在自学过程中,不仅要掌握这些理论知识,还要通过实践操作,如创建和配置AWS服务,设置安全策略,以及参与官方的认证考试,如AWS Certified Solutions Architect,以加深理解和提升技能。同时,跟踪AWS的最新服务和...

    AWS Security.pdf

    本文详细介绍了AWS中的两个重要知识点:使用AWS CloudTrail监控用户活动以及管理S3 Glacier的Vault Lock策略。这些工具和技术对于维护AWS环境的安全性至关重要。通过有效地利用这些功能,企业可以更好地保护其资产免...

    AWS Developer Associate 题库

    5. **身份和访问管理**:理解IAM(Identity and Access Management)的角色、策略和权限,以及如何安全地控制对AWS资源的访问。 6. **网络与VPC**:掌握VPC(虚拟私有云)的配置,包括子网、路由表、安全组和网络...

    AWSSDK SimpleEmail SDK(包含AWSSDK.Core)

    3. **安全实践**:遵循AWS的安全最佳实践,如使用IAM角色和策略限制权限。 4. **监控和日志**:启用日志记录以调试问题,并使用AWS CloudWatch监控服务性能和使用情况。 5. **测试**:在生产环境部署前进行充分的...

    AWS考试题 中文考试题

    它涵盖了云设计原则、选择适当的AWS服务、实施安全性、高可用性和弹性策略等知识。 2. AWS Certified SysOps Administrator - Associate(系统运营管理员 - 助理级):这个认证面向运维专业人士,强调如何有效地...

    AWS 白皮书 — 产品.zip

    将 Oracle数据库迁移到AWs的策略pdf 将应用程序迁移到AWs:指南和最佳实践pdf 将现有应用程序迁移到AWS云pdf 构建大数据存储解决方案(数据湖),实现最大灵活性,pdf 实现量佳工作负载性能所雲的CPU数量.........

    AWS:AWS迁移与部署策略.docx

    AWS:AWS迁移与部署策略.docx

    AWS 官方PPT图标资源

    AWS(Amazon Web Services)是全球领先的云计算服务提供商,其官方提供的PPT图标资源是一套非常实用的工具,尤其对于IT专业人士、系统架构师以及在云计算领域工作的人员来说,这些图标在制作报告、演示文稿或者设计...

    aws sdk - java

    通过AWS SDK for Java,你可以创建、删除和管理存储桶,上传和下载对象,以及设置访问权限和生命周期策略。此外,SDK还提供了多线程上传和下载、断点续传以及预签名URL等功能,以优化大文件操作和安全访问。 2. **...

    AWS Certified Cloud Practitioner(CLF-C02)认证考试资料整理中文-系列二

    * AWS 负责加密客户端数据、保护 Amazon EC2 管理程序和设置用户密码策略。 知识点8: 无服务器平台 * AWS 无服务器平台包括 AWS Lambda、Amazon DynamoDB、Amazon SNS 等服务。 * 这些服务允许开发者专注于编写...

    AWS SysOps Administrator(SOA-C02)认证考试资料整理中文-系列一

    在IAM策略元素中,'Action'是描述将被允许或拒绝的特定行为或操作的策略元素。 ELB ELB(Elastic Load Balancer)是AWS提供的一种负载均衡服务,允许用户将流量分配到多个实例上。可以使用CLI命令“elb-add-zones-...

    Python库 | aws_cdk.aws_dlm-1.14.0-py3-none-any.whl

    此Python库`aws_cdk.aws_dlm`是AWS CDK的一部分,专注于DLM策略的创建和管理。 动态生命周期管理(DLM)是AWS提供的服务,用于自动化EBS卷、S3对象和RDS快照的生命周期策略。通过DLM,用户可以定义何时执行复制、...

    AWS文档 — 应用程序解决方案.zip

    AWS Marketplace 中的 AWS 资源的访问权限管理策略.pdf AWS 的高性能计算简介.pdf AWS 迁移文档.pdf AWS 上的 Apache Cassandra:指南和最佳实践.pdf AWS 上的 DevOps 简介.pdf AWS 上的 Docker:在云环境下运行容器...

    AWS DVA-C02样题

    5. **安全性与身份管理**:理解AWS Identity and Access Management (IAM) 的角色、策略和权限,以及如何实现安全的资源访问。此外,还包括安全组、网络ACLs和云安全最佳实践。 6. **监控与日志管理**:学习使用...

    aws-policies:Typesafe AWS策略操作

    "aws-policies:Typesafe AWS策略操作"项目可能是为了提供一种更安全、类型安全的方式来管理和构建AWS IAM(Identity and Access Management)策略。 使用TypeScript编写AWS策略可以带来诸多好处。TypeScript是...

    AWS Developer Associate Sample

    6. **安全与身份管理**:熟悉IAM(Identity and Access Management)用于用户和资源权限管理,以及VPC(Virtual Private Cloud)和安全组策略以确保网络安全性。 7. **监控与日志记录**:理解如何使用CloudWatch...

    AWS-SAA-C03(20230928)助理架构师英文-认证考试题库.pdf:最新更新,引领你走向成功!

    AWS-SAA-C03是Amazon Web Services(AWS)提供的助理架构师认证考试,旨在测试考生对AWS云服务的理解和应用能力。此题库是针对2023年9月28日更新的,包含了全面的AWS架构知识,适用于备考这个认证的考生。以下是基于...

    esp8266连接aws_iot测试代码

    此外,确保你的AWS IoT策略允许ESP8266进行连接、发布和订阅操作。 通过这种方式,ESP8266与AWS IoT的结合,使得小型物联网设备能够无缝地与云端进行交互,实现远程监控、控制和其他复杂功能。这个项目不仅展示了...

    aws-白皮书2

    7. **strategies-for-migrating-oracle-database-to-aws.pdf**:此文档介绍了将Oracle数据库迁移到AWS的策略和方法,包括成本分析、迁移工具和最佳实践,帮助用户顺利进行云迁移。 8. **SAP-HANA-on-AWS-Manual-...

Global site tag (gtag.js) - Google Analytics