iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
Cloud Native

上完 AWS 線上課程就打算應徵相關工作是否搞錯甚麼系列 第 19

Day 19 使用 Transfer family 輕鬆架設 SFTP Server

  • 分享至 

  • xImage
  •  

傳統在架設 SFTP Server 的時候

我們需要先建立一個 VM

然後再建立使用者

最後則是限制使用者可存取的權限

架設往往都是最簡單的

然後我們就會發現我們需要對硬碟空間做監控

擔心不小心會達到空間上限

除此之外還要定期幫主機上 Patch

這樣的機制到了雲端

難道還是需要架設 EC2 來達成嗎?

其實 AWS 提供更簡單聰明的方式來達成

那就是使用 Transfer family 來達到

透過 Transfer family 我們可以快速建立檔案傳輸的伺服器

並透過目的指向 S3 達到按需付費

實現可靠度高的檔案傳輸機制並且大大減低維護成本

S3 Bucket

建立 S3 Bucket

在 S3 頁面中建立儲存體

使用預設設定即可

物件擁有權選擇ACL 已停用 (建議)

「封鎖公開存取」設定選擇封鎖所有公開存取權

儲存體的名稱記得可鑑別度高一些以避免重複

建立儲存體政策

儲存體政策之後再回來編輯也可以

因為裡面的 IAM Role 的 ARN 以及 VPC 端點

都是需要等到相關資源建立後才能取得

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "AWS": "{IAM Role ARN}"
            },
            "Action": [
                "s3:PutObjectAcl",
                "s3:PutObject",
                "s3:ListBucket",
                "s3:GetObjectVersion",
                "s3:GetObject",
                "s3:GetBucketLocation",
                "s3:DeleteObjectVersion",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::{S3 Bucket Name}/*",
                "arn:aws:s3:::{{S3 Bucket Name}}"
            ],
            "Condition": {
                "StringNotEquals": {
                    "aws:sourceVpce": "{VPC 端點}"
                }
            }
        }
    ]
}

日誌群組

進到 CloudWatch 的頁面中

在左邊側欄日誌中選擇日誌群組

並點按建立日誌群組

擔心日誌保留過久的可以設定保存天數為 90 天

或是保持原本設定勇不過期也可以

建立角色

建立可寫入日誌群組的角色

信任關係

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "transfer.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

許可

關聯至 AWS 受管政策 AWSTransferLoggingAccess

建立 Bucket 寫入的角色

信任關係

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "transfer.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

許可

建立一個自訂政策並關聯到剛剛我們建立的角色

{
    "Statement": [
        {
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::{s3 bucket name}"
            ],
            "Sid": "AllowListingOfUserFolder"
        },
        {
            "Action": [
                "s3:*"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::{s3 bucket name}/*",
            "Sid": "HomeDirObjectAccess"
        }
    ],
    "Version": "2012-10-17"
}

Trasfer Family

架設 SFTP Server

通訊協定的部分選擇 SFTP

FTP 和 FTPS 的驗證方式不同

會需要使用到 AD 相關的設定

而 SFTP 相對獨立
https://ithelp.ithome.com.tw/upload/images/20231004/20141518R9vLWgWkkX.png

身分提供者選擇管理的服務

由我們服務自行管理

https://ithelp.ithome.com.tw/upload/images/20231004/2014151886GEI4S04h.png

端點的部分如果需要從 EC2 連

則需要選擇寄存於 VPC

否則選擇公開於 SFTP 並用 Security Group 控管即可
https://ithelp.ithome.com.tw/upload/images/20231004/201415182TdmdHxRDO.png

目的地選擇 S3
https://ithelp.ithome.com.tw/upload/images/20231004/20141518p8zZCjJ61k.png

在日誌群組中選擇剛剛建立好的日誌群組
https://ithelp.ithome.com.tw/upload/images/20231004/20141518wEyTYp2gHn.png

建立完成後複製端點詳細資訊端點作為連線使用

新增使用者

使用工具建立 Public Key 和 Private Key

可以使用 PuttyKeyGen 建立

在 Server 中新增使用者

填入使用者名稱、選擇稍早建立的 IAM 角色、主目錄則選擇 S3 Bucket

下方SSH 公開金鑰則填入剛剛建立的 Public Key

使用 Client 端工具進行連線測試

使用 WinSCP 進行連線測試


上一篇
Day 18 使用 IAM User 和 S3 Bucket Bucket Policy 實現跨 AWS Account 存取
下一篇
Day 20 API Gateway 介紹
系列文
上完 AWS 線上課程就打算應徵相關工作是否搞錯甚麼30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言