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 stack Dasar, dan fungsi dasar lainnya sebagai contoh saja.

Prasyarat

Sebelum Anda membuat resource Transfer Family di AWS CloudFormation, buat penyimpanan dan peran pengguna Anda.

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

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

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

Langkah 1: Buat CloudFormation tumpukan

Untuk membuat AWS CloudFormation tumpukan dari template yang disediakan
  1. Buka AWS 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 templat, pilih Template sudah siap.

  4. Salin tautan ini, template tumpukan dasar, dan tempel ke bidang Amazon S3 URL.

  5. Klik Berikutnya.

  6. 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 EFS sistem file Amazon) 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 kebijakan IAM peran dan 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 menggunakanSFTP, Anda kemudian memberikan kunci pribadi alih-alih kata sandi.

  7. Pilih Berikutnya, lalu pilih Berikutnya lagi di halaman Configure stack options.

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

    catatan

    Di bagian bawah halaman, di bawah Kemampuan, Anda harus mengakui bahwa AWS CloudFormation mungkin membuat IAM sumber daya.

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 HTTP dan HTTPS permintaan yang diteruskan ke Amazon API Gateway. Untuk detailnya, lihat Tambahkan firewall aplikasi web.

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

  2. Pilih template dasar Transfer Custom Identity Provider API yang dihasilkan AWS CloudFormation template.

  3. Di panel Resources, pilih GET, lalu pilih Permintaan Metode.

  4. Untuk Tindakan, pilih Terapkan API. Untuk tahap Deployment, pilih prod, lalu pilih Deploy.

    Setelah metode API Gateway berhasil digunakan, lihat kinerjanya di bagian Editor Panggung.

    catatan

    Salin URL alamat 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 AWS CloudFormation tumpukan, server Transfer Family dibuat secara otomatis.

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

  2. Pilih tumpukan yang Anda buat.

  3. Pilih tab Sumber Daya.

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

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

  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 TransferServersumber daya di AWS 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 Tindakan, lalu pilih Uji.

  3. 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 AWS CloudFormation tumpukan.

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

  5. Pilih Uji.

    Jika otentikasi pengguna berhasil, pengujian mengembalikan StatusCode: 200 HTML respons dan JSON objek yang berisi rincian peran dan izin pengguna. Sebagai 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 AWS terkelola API Gateway ke peran yang Anda gunakan untuk AndaAPI.

Langkah 5: Uji SFTP koneksi dan transfer file

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

  2. 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=no myuser@server-ID.server.transfer.region-code.amazonaws.com

      Saat diminta, masukkan kata sandi Anda.

    • Jika Anda menggunakan key pair, masukkan perintah ini:

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

    catatan

    Untuk sftp perintah ini, masukkan kode 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 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 dalam CloudFormation tumpukan Anda dan dalam kebijakan yang Anda pilih untuk pengguna Anda.

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

  • CreateServer: true

  • UserHomeDirectory: /myuser-bucket

  • UserName: myuser

  • UserPassword: MySuperSecretPassword

    penting

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

  • UserPublicKey1: your-public-key

  • UserRoleArn: 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.

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:::myuser-bucket" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObjectAcl", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:PutObjectAcl", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::myuser-bucket/*" } ] }

Untuk terhubung ke server menggunakanSFTP, masukkan salah satu perintah berikut pada prompt.

  • Jika Anda menggunakan kata sandi untuk mengautentikasi, 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 key pair untuk mengautentikasi, 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 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. Sebagai contoh:

sftp> pwd Remote working directory: /myuser-bucket

Pengguna tidak dapat melihat direktori apa pun di atas direktori home. Sebagai contoh:

sftp> pwd Remote working directory: /myuser-bucket 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
  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, tempat stack-name adalah nama CloudFormation tumpukan dan lambda-identifier adalah pengenal untuk fungsi tersebut.

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

  4. Dalamresponse, tambahkan baris berikut antara Policy danHomeDirectory:

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

    Dimana uid-value and gid-value adalah 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 '/' };