目前正运维一个构筑于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 IAM**:AWS Identity and Access Management (IAM) 是一种服务,用于管理访问AWS服务和资源的安全策略。它并不提供资源利用率或性能方面的监控。 - **Amazon SNS**:Amazon Simple Notification Service ...
在自学过程中,不仅要掌握这些理论知识,还要通过实践操作,如创建和配置AWS服务,设置安全策略,以及参与官方的认证考试,如AWS Certified Solutions Architect,以加深理解和提升技能。同时,跟踪AWS的最新服务和...
本文详细介绍了AWS中的两个重要知识点:使用AWS CloudTrail监控用户活动以及管理S3 Glacier的Vault Lock策略。这些工具和技术对于维护AWS环境的安全性至关重要。通过有效地利用这些功能,企业可以更好地保护其资产免...
5. **身份和访问管理**:理解IAM(Identity and Access Management)的角色、策略和权限,以及如何安全地控制对AWS资源的访问。 6. **网络与VPC**:掌握VPC(虚拟私有云)的配置,包括子网、路由表、安全组和网络...
3. **安全实践**:遵循AWS的安全最佳实践,如使用IAM角色和策略限制权限。 4. **监控和日志**:启用日志记录以调试问题,并使用AWS CloudWatch监控服务性能和使用情况。 5. **测试**:在生产环境部署前进行充分的...
它涵盖了云设计原则、选择适当的AWS服务、实施安全性、高可用性和弹性策略等知识。 2. AWS Certified SysOps Administrator - Associate(系统运营管理员 - 助理级):这个认证面向运维专业人士,强调如何有效地...
将 Oracle数据库迁移到AWs的策略pdf 将应用程序迁移到AWs:指南和最佳实践pdf 将现有应用程序迁移到AWS云pdf 构建大数据存储解决方案(数据湖),实现最大灵活性,pdf 实现量佳工作负载性能所雲的CPU数量.........
AWS:AWS迁移与部署策略.docx
AWS(Amazon Web Services)是全球领先的云计算服务提供商,其官方提供的PPT图标资源是一套非常实用的工具,尤其对于IT专业人士、系统架构师以及在云计算领域工作的人员来说,这些图标在制作报告、演示文稿或者设计...
通过AWS SDK for Java,你可以创建、删除和管理存储桶,上传和下载对象,以及设置访问权限和生命周期策略。此外,SDK还提供了多线程上传和下载、断点续传以及预签名URL等功能,以优化大文件操作和安全访问。 2. **...
* AWS 负责加密客户端数据、保护 Amazon EC2 管理程序和设置用户密码策略。 知识点8: 无服务器平台 * AWS 无服务器平台包括 AWS Lambda、Amazon DynamoDB、Amazon SNS 等服务。 * 这些服务允许开发者专注于编写...
在IAM策略元素中,'Action'是描述将被允许或拒绝的特定行为或操作的策略元素。 ELB ELB(Elastic Load Balancer)是AWS提供的一种负载均衡服务,允许用户将流量分配到多个实例上。可以使用CLI命令“elb-add-zones-...
此Python库`aws_cdk.aws_dlm`是AWS CDK的一部分,专注于DLM策略的创建和管理。 动态生命周期管理(DLM)是AWS提供的服务,用于自动化EBS卷、S3对象和RDS快照的生命周期策略。通过DLM,用户可以定义何时执行复制、...
AWS Marketplace 中的 AWS 资源的访问权限管理策略.pdf AWS 的高性能计算简介.pdf AWS 迁移文档.pdf AWS 上的 Apache Cassandra:指南和最佳实践.pdf AWS 上的 DevOps 简介.pdf AWS 上的 Docker:在云环境下运行容器...
5. **安全性与身份管理**:理解AWS Identity and Access Management (IAM) 的角色、策略和权限,以及如何实现安全的资源访问。此外,还包括安全组、网络ACLs和云安全最佳实践。 6. **监控与日志管理**:学习使用...
"aws-policies:Typesafe AWS策略操作"项目可能是为了提供一种更安全、类型安全的方式来管理和构建AWS IAM(Identity and Access Management)策略。 使用TypeScript编写AWS策略可以带来诸多好处。TypeScript是...
6. **安全与身份管理**:熟悉IAM(Identity and Access Management)用于用户和资源权限管理,以及VPC(Virtual Private Cloud)和安全组策略以确保网络安全性。 7. **监控与日志记录**:理解如何使用CloudWatch...
AWS-SAA-C03是Amazon Web Services(AWS)提供的助理架构师认证考试,旨在测试考生对AWS云服务的理解和应用能力。此题库是针对2023年9月28日更新的,包含了全面的AWS架构知识,适用于备考这个认证的考生。以下是基于...
此外,确保你的AWS IoT策略允许ESP8266进行连接、发布和订阅操作。 通过这种方式,ESP8266与AWS IoT的结合,使得小型物联网设备能够无缝地与云端进行交互,实现远程监控、控制和其他复杂功能。这个项目不仅展示了...
7. **strategies-for-migrating-oracle-database-to-aws.pdf**:此文档介绍了将Oracle数据库迁移到AWS的策略和方法,包括成本分析、迁移工具和最佳实践,帮助用户顺利进行云迁移。 8. **SAP-HANA-on-AWS-Manual-...