当前位置: 首页 > article >正文

aws(学习笔记第八课) 使用AWS的S3,ACL和存储桶策略

aws(学习笔记第八课)

  • 使用AWSS3ACL和存储桶策略

学习内容:

  • 使用AWSS3
  • ACL和存储桶策略

1. 使用AWSS3

S3AWS的存储服务,最重要的利用场景是前端工程(静态web工程托管Static Website Hosting)的部署。S3的两个重要概念:

  • Bucket (桶)
    顾名思义,bucket就是一个桶,构成了bucket的名字必须是全球唯一的所以起名字的时候要注意,和其他人的bucket一定要避免重复。
  • Object (对象)
    对象就是存储到bucket里面的文件,可以是文本文件,图片文件或者其他二进制的文件。
    在这里插入图片描述
  1. 创建桶并上传文件
    • 使用aws-cli命令创建 当然使用AWS SDK或者CloudFormation同样也能完成
      aws s3 mb s3://awsinaction-hello-20241027在这里插入图片描述
      可以看到成功创建之后,已经可以查看到这个bucket了。在这里插入图片描述
    • 和本地的文件夹同期文件
      • 准备本地的文件夹 在这里插入图片描述
      • 执行sync命令
        aws s3 sync ./web s3://awsinaction-hello-20241027/web在这里插入图片描述
        检查aws console,文件全部上传到s3 bucket了。在这里插入图片描述
    • internet公开访问文件
      • 拷贝对象url
        在这里插入图片描述
      • 将这个url放到浏览器访问。
        可以看到,由于权限设定的问题,没有能够正常访问。 在这里插入图片描述

2. 使用ACL

S3AWS的常见服务,也是黑客通常考虑攻克的地方,所以这里的权限设定比较严格。

  1. 通常的S3的使用模式
    • Internal Access 内部访问 – 通过AWS上的EC2等服务进行内部服务的上传,下载进行访问。

    • External Access 外部访问 – 通过Internet,进行外部访问,访问S3的文件。
      在这里插入图片描述

    • 检查bucket的权限设定
      在这里插入图片描述
      这里,AWS处于安全的考虑,默认将阻止所有公开访问设置成了打开在这里插入图片描述

    • 解除bucket阻止所有公开访问设定
      在这里插入图片描述

    • 继续访问资源
      但是看出还是访问限制。在这里插入图片描述

    • 检查ACL和存储桶策略设定
      可以看出,这里有两个设定,分别是

      • ACL设定
      • 存储桶策略设定
        注意,ACL和存储桶策略一起结合,构成了存储桶的设定
        在这里插入图片描述
    • 检查S3对象文件的权限设定
      进入/awsinaction-hello-20241027/web/mountain.jpg的权限设置

      • 访问控制列表Access Control List,可以看出owner,others,group的权限设定(类似于linux的文件权限设定)
        在这里插入图片描述
    • 打开存储桶ACL设定

      • 存储桶的ACL默认为关闭
        如果设置默认的文件的ACL,看到编辑按钮是灰色的,需要点击强制存储桶拥有者按钮,打开存储桶ACL设置。
        在这里插入图片描述
    • 打开存储桶的ACL
      在这里插入图片描述

    • 之后对文件进行ACL设定
      这里,进入/awsinaction-hello-20241027/web/mountain.jpg的权限设置,可以看出,编辑按钮已经可以操作了。
      在这里插入图片描述

    • 之后对文件进行ACL设定
      /awsinaction-hello-20241027/web/mountain.jpg,公开所有人othersACL权限。在这里插入图片描述

    • 之后通过Internet对文件进行访问(也就是走others权限)
      在这里插入图片描述

  2. 使用存储桶策略进行权限控制
    AWS不推荐ACL进行存储桶对象的权限控制(类似于linux的文件chmod0666),推荐使用的是存储桶策略
    • 编辑存储桶策略,让ec2作为principal来进行S3getObjectputObject,总结下如下步骤。
      • 建立一个角色role
      • 建立一个存储桶策略,这里principal设定的时候选择上面的role
      • 建立一个ec2,在这里指定role,让该ec2具有这个角色role
    • 进行实验
      • 进入IAM服务,建立role
        注意,这里建立role的时候,需要执行任何的策略,空的role即可。 在这里插入图片描述

      • 选取存储桶->权限,之后点击编辑
        在这里插入图片描述

      • 选择策略生成器在这里插入图片描述

      • 策略生成器中编辑策略
        在这里插入图片描述

      • 定义策略
        在这里插入图片描述

      • 建立ec2,进行S3的文件拷贝
        在这里插入图片描述

      • ec2 server拷贝文件到S3

        [ec2-user@ip-172-31-1-66 ~]$ mkdir web
        [ec2-user@ip-172-31-1-66 ~]$ cd web
        [ec2-user@ip-172-31-1-66 web]$ touch hello-s3.html
        [ec2-user@ip-172-31-1-66 web]$ vim hello-s3.html
        [ec2-user@ip-172-31-1-66 web]$ cd ..
        [ec2-user@ip-172-31-1-66 ~]$ aws s3 sync ./web s3://awsinaction-hello-20241027/web
        fatal error: An error occurred (AccessDenied) when calling the ListObjectsV2 operation: User: arn:aws:sts::081353481087:assumed-role/EC2InstanceProfileRole/i-0aab6db8a62485056 is not authorized to perform: s3:ListBucket on resource: "arn:aws:s3:::awsinaction-hello-20241027" because no identity-based policy allows the s3:ListBucket action
        [ec2-user@ip-172-31-1-66 ~]$ pwd
        /home/ec2-user
        [ec2-user@ip-172-31-1-66 ~]$ cd web
        [ec2-user@ip-172-31-1-66 web]$ cd ..
        [ec2-user@ip-172-31-1-66 ~]$ aws s3 cp ./web/hello-s3.html s3://awsinaction-hello-20241027/web/hello-s3.html
        upload: web/hello-s3.html to s3://awsinaction-hello-20241027/web/hello-s3.html
        [ec2-user@ip-172-31-1-66 ~]$
        
      • ec2 server拷贝文件检查
        在这里插入图片描述
        *尝试访问hello-s3.htmlURL
        https://awsinaction-hello-20241027.s3.ap-northeast-1.amazonaws.com/web/hello-s3.html
        在这里插入图片描述

      • 对于Internetothers,还是Access Denied在这里插入图片描述

      • 对于Internetothers,还是Access Denied,使用存储桶策略others用户(Internet用户)设置公开权限。
        在这里插入图片描述

      • 使用Internet用户进行访问
        在这里插入图片描述

    • 检查ACL权限设定
      可以看到,即使没有进行ACL上,对于others用户(Internet用户)的权限开放,但是存储桶策略进行了设置,同样会开放others用户(Internet用户)的权限。
      在这里插入图片描述

http://www.kler.cn/news/368845.html

相关文章:

  • iOS静态库(.a)及资源文件的生成与使用详解(OC版本)
  • C语言 - GNU C 和 ANSI C 之间的差异
  • 【rabbitmq】rabbitmq工作模式
  • Spring Boot框架下的酒店住宿登记系统
  • 深度优先算法(DFS)洛谷P1683-入门
  • 智慧农业大数据平台:智汇田园,数驭未来
  • C++——输入3个字符串,按由小到大的顺序输出。用指针或引用方法处理。
  • Matlab学习01-矩阵
  • 动态IP是什么?
  • 2024年信息化管理与计算技术研讨会 (ICIMCT 2024)--分会场
  • Kafka系列之:Kafka集群新增节点后实现数据均衡
  • 5G IMS开户需要哪些信息
  • el-table 设置单击行时选中当前行的复选框并取消其他复选框的选择
  • 快速搭建SpringBoot3+Prometheus+Grafana
  • Tongweb7049m4+THS6010-6012版本 传真实ip到后端(by yjm+lwq)
  • 太阳能面板分割系统:训练自动化
  • 高效改进!防止DataX从HDFS导入关系型数据库丢数据
  • 学习threejs,使用粒子实现雨滴特效
  • 计算机网络协议
  • 14 Docker容器单机网络架构全攻略:docker网络细节揭秘
  • 【mysql 进阶】3 MySQL架构和存储引擎
  • esp32c6 开发实战:http 协议
  • Pytorch学习--如何下载及使用Pytorch中自带数据集,如何把数据集和transforms联合在一起使用
  • 【WIN】WIN10_WSL_Ubuntu18.04_ROS_rviz_docker
  • Mbox网关——氢能制造产业的智能桥梁
  • 4.rabbitmq安装【Docker】