AWS-經典雲應用架構
大話AWS雲端架構
經典雲應用架構
Agenda
- I AM (權限管理)
- VPC (網路連線)
- EC2 (主機伺服器)
- S3 (雲端空間)
- RDS (資料庫)
- Route53 (註冊網域與流量分配)
- CloudWatch、CloudTrail (流量監控)
I AM(權限管理)
AWS 安全架構設計觀
Role 與 User 差異
- User 是表示跟某個人有關聯
- Role 只是為了某個目的存在(使用S3權限、AWS之間互通),並不屬於特定人
Policy 策略
- Effect:允許或拒絕存取。預設拒絕
- Principal:受策略約束的單位。例如: IAM User、S3 Backet
- Condition:必須具備【條件】策略才可以生效。例如必須是特定IP才可以存取S3
- Action:允許AWS服務的動作。例如允許使用者呼叫S3的ListBucket
- Resorce:允許對其執行動作的AWS資源。
允許老王考試一百分的時候吃牛肉麵
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1653346692667",
"Action": [
"s3:CreateAccessPoint",
"s3:CreateBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::${BucketName}/${KeyName}.",
"Condition": {
"Bool": {
"aws:userid": "TEST"
}
}
}
]
}
設定Policy 流程
Role
- 可以在帳戶中建立的另一種IAM角色,具有特定的權限
- 存在目的:讓需要他的任何人可代入
- 一個跨帳號、跨服務、甚至跨任何一個人的設定,可以用來委派AWS資源的存取,兩個服務之間溝通必須要透過 IAM Role
- 沒有長期的帳號密碼或是憑證、而是角色工作階段提供臨時安全性登入資料
常見應用
可用於多個AWS資源之間的溝通
外部系統帳號串接AWS
題外話:產品多的話可以使用多個AWS帳號來管理,但是如果各個帳號要互相存取資源,就會需要使用 Role 串接起來。
業界實際應用
- 設定階段:透過Group、User、Policy建立出穩健安全的開發環境
- 開發階段:依照現實需求撰寫多個Policy並對開發者的行為做監控
- 生產階段:需要把應用部署到EC2等多個服務上,服務之間有調用需求,調用時就需要用到Role機制,因為必須要在生產階段建立Role來協助應用。
VPC(網路連線)
一般使用情境
VPC 使用情境
- 透過IGW(Internet GetWay),
- 按照 Route Table 穿越 NACL(Network Acces Control List)防火牆
- 進入到Publice Subnet 裡面的 Instance(Server)
VPC的四大類服務對接方式
- NAT Gateway
- End Point
- Peering Connection
- VPN Connection
NAT GeteWay
-
VPC內有很多公網段與私網段,預設是不能對外的,需要加入Nat GateWay才有辦法
-
運作原理:將私有網段的流量倒流到公網段後,轉發至外部網路,讓私網段可以對外連線,且又不會被外部網路認得
End Point
-
Instance 預設狀況 都是透過外網的方式與其他服務溝通(例如S3)
-
好處:使用EndPoint 傳輸速度會比使用外網快
Peering Connection
兩個VPC服務之間要透過內網的方式溝通
-
場景一
- 兩個VPC是不同的產品,一個生活磚、一個後台,兩個要做資料溝通就可以透過此方法
-
場景二
- 開發環境有:開發、測試、產品,之間要互聯,也可以使用Peering Connection
VPN Connection
EC2
EC2 計費方式
付費方案 | 應用場景 |
---|---|
隨需 - On Demand | 適用臨時有機器需求,用多少、付多少。 |
保留 - Reserved | 適用需求明確且確定是長期需求,可低價購買長期保留機器 |
時程保留 - Schedule Reserved | 適用特定時間使用 |
競標 - Spot | 適用於運算力高的需求,且運算任務可被中斷,但之後可接續進行。價高者得 |
專用主機 - Dedicate | 使用特殊軟體,依照主機規格(如 CPU核心數),進行授權使用 |
虛擬映像檔案 AMI(Amazon Machine Image)
- 官方 - 免費
- 第三方製作 - 付費
Immutable 原則
- 建出來的AMI不能移動,若要改變,得透過新建複製的思路來完成。要製作新的
Instance
t2.micro
- t 應用場景
- 2 虛擬化技術版本
- mirco 規格大小
硬體用有場景代號
常見代號 | 應用場景 | 常見代號 | 應用場景 |
---|---|---|---|
A | 一般用途 | P | GPU運算使用 |
T | 一般用途 | Inf | GPU運算使用 |
M | 一般用途 | G | GPU運算使用 |
C | CPU運算優化 | F | GPU運算使用 |
R | 記憶體優化 | Inf | 儲存優化 |
X | 記憶體優化 | D | 儲存優化 |
Z | 記憶體優化 | H | 儲存優化 |
U | 記憶體優化 |
User Data
- 啟動Instance之前可以編寫User Data來製作一連串的自動化工作,或是安裝特定服務(Nginx、Python、Docker、Redis)
Instance Store
-
資料放置在Host 主機之中,如果刪除資料硬碟,資料會不見,可與EBS搭配
-
注意:重開機的話資料還是會保留,開關機才會刪除
EBS
- 資料另外獨立出來,關機的時候資料還是儲存起來
- 關機、重開機都不會影響資料存活
EBS 與 Instance Store 差異
- 雖然Instance 再傳輸上會比較快,但EBS才是比較實用的選擇
EBS選擇
一般常使用gp2,大數據使用St1,不常使用的資料使用sc1
防火牆 Security Group (安全群組)
- 為了防止惡意流量或非預期的流量存取,又考量到各家作業系統在網路防範上的設計不同,採取了外掛式的防火牆
- 與Windows 一樣可以設定 InBonud、OutBonud,另外還有一種帶狀態的可以進去就可以出來
網路卡 Elastic NetWork Interface
- 預設情況下 Instance 綁定的公有IP ,關機之後就會變換,跟上一篇Instance Store同概念
- 設定EIPS (Elastic IP)可以解決
連線金鑰 - KeyPair 兩種論點
- 使用公鑰私鑰
- 有異常使用UserData創建新的
EC2 小節
- 可以從AMI 選擇還原出一個Instance,要選擇規格
- 可以設定MetaData做詳細內部設定
- 接者選擇EBS或是Intance Store(通常應該是共存),EBS有HDD或是SSD的選擇
- 之後再Instance 設定防火牆 Security Group,
- 接著設定要不要使用KeyPair連到Instance,
- 直接放入公鑰,之後用私鑰連入。
- 使用UserMeta作為開新機器,不可以連到Instance,
- 之後再進行Montior監測
S3
儲存空間逐漸龐大,權限、加密、管理層面的複雜問題
名詞解釋
- Bucket:空間
- Object:物件(檔案、圖片)
- 重視可用性(物件是否無法取回?)、耐久性(物件是否損壞故障?)
- 每個Object 都有獨一無二的https連結
S3多種儲存體款型
檔案加密方式
- 伺服器
- 由KMS建立的CMK(CMKs stored in AWS KMS)
- S3託管的加密金鑰(S3 - Managed Encryption Keys)
- 客戶提供的加密金鑰(Customer-Provided Encryption Keys)
- 用戶
- 使用存在本地應用程式的加密金鑰(Use a master key you store within your appliction)
存取控制
外三
- Block Public Access 預設關閉對外權限,避免使用者將Bucket、Object對外開放
- Bucket Policy 可以控制更細微的權限:指定特定IP或是Header
- ACL 可以透過網頁設定較為簡單的原則
內一
- User 針對 I AM進行控管
檔案刪除
- MAF 刪除檔案需要手機驗證確認才可以
- Lock 完全不開放刪除權限
- Version 版本控管方式,可以選擇要復原的版本
監控
- Server Access Logging 針對Bucket做存取的監控
- Client Level Logging 針對Oject 存取做監控
RDS
解決可用性與備份、擴展需求
自架RDB VS RDS
- 自架可以選擇資料庫引擎
- RDS:MYSQL、MSSQL、ORACLE、MDB、PostgreSQL、Amazon Aurora
- 手動備份:不會刪除資料
- 自動備份:自動保留最新一份
- RDB可以自己校調作業系統、RDS不行(有提供Parameter Group 匯入資料庫參數
RDS 高可用性、校調
- 資料備援與系統高可用性
- 提供Multi-AZ概念,須先建立Subnet-Group,再挑選適合的Subnet去建置RDS
Route 53
註冊網域與流量分配
常見格式
- A Record:網域直接對應Instance
- CName:網域對應網域
Alias 與 CName的抉擇
- 有些服務用自己的AWS隨機域名,所以可以使用CName進行轉發,但會有轉發過程,可以使用 Alias 來避免轉發
路由政策
公司客製
-
SImple routing policy (簡便路由):
為網域執行指定功能的單一資源,就是把一個網域套上一個Web伺服器 -
Weighte routing policy(加權路由):
按照我方定的比例流量路由到多個資源 -
Multivalue answer routing policy (多值回答)
隨機選取正常紀錄(最多八個)回應DNS的查詢,可以使用該政策
地理
-
GeoLocation routing policy (地利位置路由)
根據用戶的地理位置進行流量分發 -
Geoproximity routing policy (地理位置鄰近性)
根據資源位置路由流量,將流量從某個位置中的資源,轉移到另一個位置中的資源
效能
- Latency routing policy (延遲路由)
根據用戶的最佳連線延遲,進行轉發到不同伺服器 - Failover routing policy (故障轉移)
指向主要與備用位置,當主要位置失效時,會自動切換到備用位置