View a markdown version of this page

Menyiapkan metode Amazon API Gateway sebagai penyedia identitas khusus - AWS Transfer Family

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 khusus

Tutorial ini menggambarkan cara mengatur metode Amazon API Gateway dan menggunakannya sebagai penyedia identitas khusus untuk mengunggah file ke AWS Transfer Family server. Tutorial ini menggunakan template tumpukan dasar, dan fungsionalitas dasar lainnya sebagai contoh saja.

Prasyarat

Sebelum Anda membuat sumber daya Transfer Family di CloudFormation, buat penyimpanan dan peran pengguna Anda.

Untuk menentukan penyimpanan dan membuat peran pengguna
  1. Tergantung pada penyimpanan yang Anda gunakan, lihat dokumentasi berikut:

  2. Untuk membuat peran pengguna, lihat Membuat peran dan kebijakan IAM

Anda memasukkan detail untuk penyimpanan dan peran pengguna Anda saat membuat CloudFormation tumpukan Anda di bagian berikutnya.

Langkah 1: Buat CloudFormation tumpukan

Untuk membuat sebuah AWS CloudFormation tumpukan dari template yang disediakan
  1. Buka CloudFormation konsol di https://console.aws.amazon.com/cloudformation.

  2. Pilih Buat tumpukan, dan pilih Dengan sumber daya baru (standar).

  3. Di panel Prasyarat - Siapkan template, pilih Pilih template yang ada.

  4. Salin tautan ini, Template tumpukan dasar, dan tempelkan ke bidang URL Amazon S3.

  5. Klik Berikutnya.

  6. Tentukan parameter, termasuk nama untuk tumpukan Anda. Pastikan untuk melakukan hal berikut:

    • Ganti nilai default untuk UserName dan UserPassword.

    • Untuk UserHomeDirectory, masukkan detail untuk penyimpanan (baik bucket Amazon S3 atau sistem file Amazon EFS) yang Anda buat sebelumnya.

    • Ganti default UserRoleArn dengan peran pengguna yang Anda buat sebelumnya. Per AWS Identity and Access Management an (IAM) harus memiliki izin yang sesuai. Untuk contoh peran IAM dan kebijakan bucket, lihatLangkah 6: Batasi akses ke bucket.

    • Jika Anda ingin mengotentikasi menggunakan kunci publik alih-alih kata sandi, masukkan kunci publik Anda di UserPublicKey1 bidang. Pertama kali Anda terhubung ke server menggunakan SFTP, Anda kemudian memberikan kunci pribadi alih-alih kata sandi.

  7. Pilih Berikutnya, lalu pilih Ber ikutnya lagi pada halaman Konfigurasi opsi tumpukan.

  8. Tinjau detail untuk tumpukan yang Anda buat, lalu pilih Buat tumpukan.

    catatan

    Di bagian bawah halaman, di bawah Kem ampuan, 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 mengonfigurasi 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 Menambahkan 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 mengirim permintaan duplikat atau berulang ke API Gateway

  • Mengaktifkan caching akan menyebabkan API Gateway merespons dengan data yang tidak cocok, mengakibatkan tanggapan yang tidak valid terhadap permintaan otentikasi

Untuk memeriksa konfigurasi metode API Gateway untuk server Anda dan menyebarkannya
  1. Buka konsol API Gateway di https://console.aws.amazon.com/apigateway/.

  2. Pilih API template dasar Transfer Custom Identity Pro vider yang dihasilkan CloudFormation template.

  3. Di panel Sumber daya, pilih GET, lalu pilih Per mintaan Metode.

  4. Untuk T ind akan, pilih De ploy API. Untuk tahap Deployment, pilih prod, lalu pilih Deploy.

    Setelah metode API Gateway berhasil diterapkan, lihat kinerjanya di bagian Stage Editor.

    catatan

    Salin alamat URL Invoke yang muncul di bagian atas halaman. Anda akan membutuhkannya untuk langkah selanjutnya.

Langkah 3: Melihat detail server Transfer Family

Saat Anda menggunakan template untuk membuat CloudFormation tumpukan, server Transfer Family dibuat secara otomatis.

Untuk melihat detail server Transfer Family
  1. Buka CloudFormation konsol di https://console.aws.amazon.com/cloudformation.

  2. Pilih tumpukan yang Anda buat.

  3. Pilih tab Sumber Daya.

    Layar yang menunjukkan daftar sumber daya yang dibuat selama pembuatan CloudFormation tumpukan, dengan detail untuk server Transfer Family disorot.

    Server ARN ditampilkan di kolom ID Fisik untuk TransferServer baris. ID server terkandung dalam ARN, misalnya s-11112222333344445.

  4. 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 TransferServer sumber 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
  1. Buka AWS Transfer Family konsol di https://console.aws.amazon.com/transfer/.

  2. Pada halaman Server, pilih server baru Anda, pilih Tind akan, lalu pilih U ji.

  3. Masukkan teks untuk kredenSIAL masuk Anda ke bidang Nama Pengguna, dan ke bidang Kata Sandi. Ini adalah nilai yang Anda tetapkan saat Anda menerapkan tumpu CloudFormation kan.

  4. Untuk Server Protocol, pilih SFTP, dan untuk IP Sumber, masukkan127.0.0.1.

  5. Pilih Uji.

    Jika otentikasi pengguna berhasil, pengujian mengembalikan respons StatusCode: 200 HTML 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 terkel AWS ola API Gateway ke peran yang Anda gunakan untuk API Anda.

Langkah 5: Uji koneksi SFTP dan transfer file

Untuk menguji koneksi SFTP
  1. Pada perangkat Linux atau macOS, buka terminal perintah.

  2. Masukkan salah satu perintah berikut, tergantung pada apakah Anda menggunakan kata sandi atau pasangan kunci untuk otentikasi.

    • Jika Anda menggunakan kata sandi, masukkan perintah ini:

      sftp -o PubkeyAuthentication=no myuser@server-ID.server.transfer.region-code.amazonaws.com

      Saat diminta, masukkan kata sandi Anda.

    • Jika Anda menggunakan pasangan kunci, masukkan perintah ini:

      sftp -i private-key-file myuser@server-ID.server.transfer.region-code.amazonaws.com

    catatan

    Untuk sftp perintah ini, masukkan kode untuk Wilayah AWS tempat server Transfer Family Anda berada. Misalnya, jika server Anda berada di AS Timur (Ohio), masukkanus-east-2.

  3. Pada sftp> prompt, pastikan Anda dapat mengunggah (put), mengunduh (get), dan melihat direktori dan file (pwddanls).

Langkah 6: Batasi akses ke bucket

Anda dapat membatasi siapa yang dapat mengakses bucket Amazon S3 tertentu. Contoh berikut menunjukkan pengaturan yang akan digunakan dalam CloudFormation tumpukan dan kebijakan yang Anda pilih untuk pengguna Anda.

Dalam contoh ini, kami menetapkan parameter berikut untuk CloudFormation tumpukan:

  • CreateServer: true

  • UserHomeDirectory: /amzn-s3-demo-bucket1

  • UserName: myuser

  • UserPassword: MySuperSecretPassword

    penting

    Ini adalah contoh kata sandi. Saat mengonfigurasi metode API Gateway, pastikan Anda memasukkan kata sandi yang kuat.

  • UserPublicKey1: your-public-key

  • UserRoleArn: arn:aws:iam::role-id:role/myuser-api-gateway-role

Ini UserPublicKey1 adalah kunci publik yang telah Anda buat sebagai bagian dari pasangan public/private kunci.

role-idIni unik untuk peran pengguna yang Anda buat. Kebijakan yang dilampirkan myuser-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 menyambung ke server menggunakan SFTP, masukkan salah satu perintah berikut pada prompt.

  • Jika Anda menggunakan kata sandi untuk mengotentikasi, jalankan perintah berikut:

    sftp -o PubkeyAuthentication=no myuser@transfer-server-ID.server.transfer.region-id.amazonaws.com

    Saat diminta, masukkan kata sandi Anda.

  • Jika Anda menggunakan pasangan kunci untuk mengotentikasi, jalankan perintah berikut:

    sftp -i private-key-file myuser@transfer-server-ID.server.transfer.region-id.amazonaws.com

catatan

Untuk sftp perintah ini, gunakan ID untuk Wilayah AWS lokasi server Transfer Family Anda. 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
  1. Buka konsol Lambda di https://console.aws.amazon.com/lambda/.

  2. Pilih fungsi Lambda yang Anda buat sebelumnya. Fungsi Lambda memiliki format stack-name - GetUserConfigLambda - lambda-identifier, di mana stack-name adalah nama CloudFormation tumpukan dan lambda-identifier merupakan pengidentifikasi untuk fungsi tersebut.

  3. Di tab Kode, pilih index.js untuk menampilkan kode untuk fungsi tersebut.

  4. Di dalamnyaresponse, tambahkan baris berikut antara Policy danHomeDirectory:

    PosixProfile: {"Uid": uid-value, "Gid": gid-value},

    Dimana uid-value dan gid-value adalah bilangan bulat, 0 atau lebih besar, yang masing-masing mewakili ID Pengguna dan ID Grup.

    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 '/' };