Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyiapkan metode Amazon API Gateway sebagai penyedia identitas kustom
Tutorial ini menggambarkan cara menyiapkan metode Amazon API Gateway dan menggunakannya sebagai penyedia identitas khusus untuk mengunggah file ke AWS Transfer Family server. Tutorial ini menggunakan template stack Dasar
Topik
Prasyarat
Sebelum Anda membuat resource Transfer Family di CloudFormation, buat penyimpanan dan peran pengguna Anda.
Untuk menentukan penyimpanan dan membuat peran pengguna
Bergantung pada penyimpanan yang Anda gunakan, lihat dokumentasi berikut:
Untuk membuat bucket Amazon S3, lihat Bagaimana cara membuat bucket S3? di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
-
Untuk membuat sistem file Amazon EFS, lihatKonfigurasikan sistem file Amazon EFS.
-
Untuk membuat peran pengguna, lihat Buat peran dan kebijakan IAM
Anda memasukkan detail untuk penyimpanan Anda dan peran pengguna Anda ketika Anda membuat CloudFormation tumpukan Anda di bagian berikutnya.
Langkah 1: Buat CloudFormation tumpukan
Untuk membuat AWS CloudFormation tumpukan dari template yang disediakan
Buka CloudFormation konsol di https://console.aws.amazon.com/cloudformation
. -
Pilih Buat tumpukan, dan pilih Dengan sumber daya baru (standar).
-
Di panel Prasyarat - Siapkan templat, pilih Pilih templat yang ada.
-
Salin tautan ini, template tumpukan dasar
, dan tempel ke bidang URL Amazon S3. -
Klik Berikutnya.
-
Tentukan parameter, termasuk nama untuk tumpukan Anda. Pastikan untuk melakukan hal berikut:
Ganti nilai default untuk UserNamedan UserPassword.
-
Untuk UserHomeDirectory, masukkan detail penyimpanan (baik bucket Amazon S3 atau sistem file Amazon EFS) yang Anda buat sebelumnya.
-
Ganti default UserRoleArndengan peran pengguna yang Anda buat sebelumnya. Peran AWS Identity and Access Management (IAM) harus memiliki izin yang sesuai. Untuk contoh peran IAM dan kebijakan bucket, lihatLangkah 6: Batasi akses ke ember.
-
Jika Anda ingin mengautentikasi menggunakan kunci publik alih-alih kata sandi, masukkan kunci publik Anda di bidang UserPublicKey1. Pertama kali Anda terhubung ke server menggunakan SFTP, Anda kemudian memberikan kunci pribadi alih-alih kata sandi.
-
Pilih Berikutnya, lalu pilih Berikutnya lagi di halaman Configure stack options.
-
Tinjau detail tumpukan yang Anda buat, lalu pilih Buat tumpukan.
catatan
Di bagian bawah halaman, di bawah Kemampuan, Anda harus mengakui bahwa CloudFormation mungkin membuat sumber daya IAM.
Langkah 2: Periksa konfigurasi metode API Gateway untuk server Anda
catatan
Untuk meningkatkan keamanan, Anda dapat mengkonfigurasi firewall aplikasi web. AWS WAF adalah firewall aplikasi web yang memungkinkan Anda memantau permintaan HTTP dan HTTPS yang diteruskan ke Amazon API Gateway. Lihat perinciannya di Tambahkan firewall aplikasi web.
Jangan aktifkan caching API Gateway
Jangan aktifkan caching untuk metode API Gateway Anda saat menggunakannya sebagai penyedia identitas khusus untuk Transfer Family. Caching tidak pantas dan tidak valid untuk permintaan otentikasi karena:
Setiap permintaan otentikasi unik dan memerlukan respons langsung, bukan respons yang di-cache
Caching tidak memberikan manfaat karena Transfer Family tidak pernah mengirimkan permintaan duplikat atau berulang ke API Gateway
Mengaktifkan caching akan menyebabkan API Gateway merespons dengan data yang tidak cocok, sehingga respons yang tidak valid terhadap permintaan otentikasi
Untuk memeriksa konfigurasi metode API Gateway untuk server Anda dan menerapkannya
-
Buka konsol API Gateway di https://console.aws.amazon.com/apigateway/
. -
Pilih API template dasar Transfer Custom Identity Provider yang dihasilkan CloudFormation template.
-
Di panel Resources, pilih GET, lalu pilih Method Request.
-
Untuk Tindakan, pilih Deploy API. Untuk tahap Deployment, pilih prod, lalu pilih Deploy.
Setelah metode API Gateway berhasil diterapkan, lihat kinerjanya di bagian Editor Panggung.
catatan
Salin alamat URL Invoke yang muncul di bagian atas halaman. Anda akan membutuhkannya untuk langkah selanjutnya.
Langkah 3: Lihat detail server Transfer Family
Saat Anda menggunakan template untuk membuat CloudFormation tumpukan, server Transfer Family dibuat secara otomatis.
Untuk melihat detail server Transfer Family
Buka CloudFormation konsol di https://console.aws.amazon.com/cloudformation
. Pilih tumpukan yang Anda buat.
Pilih tab Sumber Daya.
Server ARN ditampilkan di kolom Physical ID untuk baris. TransferServer ID server terkandung dalam ARN, misalnya s-11112222333344445.
Buka AWS Transfer Family konsol di https://console.aws.amazon.com/transfer/
, dan pada halaman Server, pilih server baru. ID server cocok dengan ID yang ditampilkan untuk TransferServersumber daya di CloudFormation.
Langkah 4: Uji apakah pengguna Anda dapat terhubung ke server
Untuk menguji apakah pengguna Anda dapat terhubung ke server, menggunakan konsol Transfer Family
Buka AWS Transfer Family konsol di https://console.aws.amazon.com/transfer/
. -
Pada halaman Server, pilih server baru Anda, pilih Tindakan, lalu pilih Uji.
-
Masukkan teks untuk kredensi login Anda ke dalam bidang Nama Pengguna, dan ke bidang Kata Sandi. Ini adalah nilai yang Anda tetapkan saat Anda menerapkan CloudFormation tumpukan.
-
Untuk Protokol Server, pilih SFTP, dan untuk IP Sumber, masukkan.
127.0.0.1 -
Pilih Uji.
Jika otentikasi pengguna berhasil, pengujian mengembalikan respons
StatusCode: 200HTML dan objek JSON yang berisi rincian peran dan izin pengguna. Contoh:{ "Response": "{\"Role\": \"arn:aws:iam::123456789012:role/my-user-role\",\"HomeDirectory\": \"/${transfer:HomeBucket}/\"}", "StatusCode": 200, "Message": "", "Url": "https://1a2b3c4d5e.execute-api.us-east-2.amazonaws.com/prod/servers/s-1234abcd5678efgh0/users/myuser/config" }Jika pengujian gagal, tambahkan salah satu kebijakan yang AWS dikelola API Gateway ke peran yang Anda gunakan untuk API Anda.
Langkah 5: Uji koneksi SFTP dan transfer file
Untuk menguji koneksi SFTP
-
Pada perangkat Linux atau macOS, buka terminal perintah.
-
Masukkan salah satu perintah berikut, tergantung pada apakah Anda menggunakan kata sandi atau key pair untuk otentikasi.
-
Jika Anda menggunakan kata sandi, masukkan perintah ini:
sftp -o PubkeyAuthentication=nomyuser@server-ID.server.transfer.region-code.amazonaws.comSaat diminta, masukkan kata sandi Anda.
-
Jika Anda menggunakan key pair, masukkan perintah ini:
sftp -iprivate-key-filemyuser@server-ID.server.transfer.region-code.amazonaws.com
catatan
Untuk
sftpperintah ini, masukkan kode Wilayah AWS tempat server Transfer Family Anda berada. Misalnya, jika server Anda berada di AS Timur (Ohio), masukkanus-east-2. -
-
Pada
sftp>prompt, pastikan bahwa Anda dapat meng-upload (put), download (get), dan melihat direktori dan file (pwddanls).
Langkah 6: Batasi akses ke ember
Anda dapat membatasi siapa yang dapat mengakses bucket Amazon S3 tertentu. Contoh berikut menunjukkan setelan yang akan digunakan di CloudFormation tumpukan Anda dan dalam kebijakan yang Anda pilih untuk pengguna Anda.
Dalam contoh ini, kami menetapkan parameter berikut untuk CloudFormation tumpukan:
CreateServer:
trueUserHomeDirectory:
/amzn-s3-demo-bucket1UserName:
myuserUserPassword:
MySuperSecretPasswordpenting
Ini adalah contoh kata sandi. Saat mengonfigurasi metode API Gateway, pastikan Anda memasukkan kata sandi yang kuat.
UserPublicKey1:
your-public-keyUserRoleArn:
arn:aws:iam::role-id:role/myuser-api-gateway-role
UserPublicKey1 adalah kunci publik yang telah Anda hasilkan sebagai bagian dari public/private key pair.
Ini unik untuk peran pengguna yang Anda buat. Kebijakan yang dilampirkan role-idmyuser-api-gateway-role adalah sebagai berikut:
-
{ "Version":"2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObjectAcl", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:PutObjectAcl", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*" } ] }
Untuk terhubung ke server menggunakan SFTP, masukkan salah satu perintah berikut pada prompt.
Jika Anda menggunakan kata sandi untuk mengautentikasi, jalankan perintah berikut:
sftp -o PubkeyAuthentication=nomyuser@transfer-server-ID.server.transfer.region-id.amazonaws.comSaat diminta, masukkan kata sandi Anda.
-
Jika Anda menggunakan key pair untuk mengautentikasi, jalankan perintah berikut:
sftp -iprivate-key-filemyuser@transfer-server-ID.server.transfer.region-id.amazonaws.com
catatan
Untuk sftp perintah ini, gunakan ID Wilayah AWS tempat server Transfer Family Anda berada. Misalnya, jika server Anda berada di AS Timur (Ohio), gunakanus-east-2.
Pada sftp prompt, Anda diarahkan ke direktori home Anda, yang dapat Anda lihat dengan menjalankan pwd perintah. Contoh:
sftp> pwd Remote working directory: /amzn-s3-demo-bucket1
Pengguna tidak dapat melihat direktori apa pun di atas direktori home. Contoh:
sftp> pwd Remote working directory: /amzn-s3-demo-bucket1 sftp> cd .. sftp> ls Couldn't read directory: Permission denied
Perbarui Lambda jika menggunakan Amazon EFS
Jika Anda memilih Amazon EFS sebagai opsi penyimpanan untuk server Transfer Family, Anda perlu mengedit fungsi lambda untuk tumpukan Anda.
Untuk menambahkan profil Posix ke fungsi Lambda Anda
Buka konsol Lambda di. https://console.aws.amazon.com/lambda/
-
Pilih fungsi Lambda yang Anda buat sebelumnya. Fungsi Lambda memiliki format
stack-name- GetUserConfigLambda -lambda-identifier, di manastack-namenama CloudFormation tumpukan danlambda-identifiermerupakan pengidentifikasi untuk fungsi tersebut. -
Di tab Kode, pilih index.js untuk menampilkan kode untuk fungsi tersebut.
-
Dalam
response, tambahkan baris berikut antaraPolicydanHomeDirectory:PosixProfile: {"Uid":uid-value, "Gid":gid-value},Dimana
uid-valuedangid-valuemerupakan bilangan bulat, 0 atau lebih besar, yang mewakili ID Pengguna dan ID Grup masing-masing.Misalnya, setelah Anda menambahkan profil Posix, bidang respons mungkin terlihat seperti berikut:
response = { Role: 'arn:aws:iam::123456789012:role/api-gateway-transfer-efs-role', // The user will be authenticated if and only if the Role field is not blank Policy: '', // Optional JSON blob to further restrict this user's permissions PosixProfile: {"Gid": 65534, "Uid": 65534}, HomeDirectory: '/fs-fab2c234' // Not required, defaults to '/' };