Mengintegrasikan Active Directory - AWS ParallelCluster

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengintegrasikan Active Directory

Dalam tutorial ini, Anda membuat lingkungan beberapa pengguna. Lingkungan ini mencakup AWS ParallelCluster yang terintegrasi dengan AWS Managed Microsoft AD (Active Directory) dicorp.example.com. Anda mengonfigurasi Admin pengguna untuk mengelola direktori, ReadOnly pengguna untuk membaca direktori, dan user000 pengguna untuk masuk ke cluster. Anda dapat menggunakan jalur otomatis atau jalur manual untuk membuat sumber daya jaringan, Direktori Aktif (AD), dan instans Amazon EC2 yang Anda gunakan untuk mengonfigurasi AD. Terlepas dari jalurnya, infrastruktur yang Anda buat sudah dikonfigurasi sebelumnya untuk diintegrasikan AWS ParallelCluster menggunakan salah satu metode berikut:

  • LDAPS dengan verifikasi sertifikat (direkomendasikan sebagai opsi paling aman)

  • LDAPS tanpa verifikasi sertifikat

  • LDAP

LDAP sendiri tidak menyediakan enkripsi. Untuk memastikan transmisi informasi yang berpotensi sensitif dengan aman, kami sangat menyarankan Anda menggunakan LDAPS (LDAP over TLS/SSL) untuk klaster yang terintegrasi dengan AD. Untuk informasi selengkapnya, lihat Mengaktifkan LDAPS sisi server menggunakan AWS Managed Microsoft AD dalam Panduan Administrasi. AWS Directory Service

Setelah Anda membuat sumber daya ini, lanjutkan untuk mengkonfigurasi dan membuat klaster Anda terintegrasi dengan Active Directory (AD) Anda. Setelah cluster dibuat, masuk sebagai pengguna yang Anda buat. Untuk informasi lebih lanjut tentang konfigurasi yang Anda buat dalam tutorial ini, lihat Beberapa akses pengguna ke cluster dan bagian DirectoryServicekonfigurasi.

Tutorial ini mencakup cara membuat lingkungan yang mendukung beberapa akses pengguna ke cluster. Tutorial ini tidak mencakup cara Anda membuat dan menggunakan AWS Directory Service AD. Langkah-langkah yang Anda ambil untuk mengatur AWS Managed Microsoft AD dalam tutorial ini disediakan untuk tujuan pengujian saja. Mereka tidak disediakan untuk menggantikan dokumentasi resmi dan praktik terbaik yang dapat Anda temukan di AWS Managed Microsoft ADdan Simple AD di Panduan AWS Directory Service Administrasi.

catatan

Kata sandi pengguna direktori kedaluwarsa sesuai dengan definisi properti kebijakan kata sandi direktori. Untuk informasi selengkapnya lihat Setelan kebijakan yang didukung. Untuk mengatur ulang kata sandi direktori dengan AWS ParallelCluster, lihatCara mengatur ulang kata sandi pengguna dan kata sandi yang kedaluwarsa.

catatan

Alamat IP pengontrol domain direktori dapat berubah karena perubahan pengontrol domain dan pemeliharaan direktori. Jika Anda memilih metode pembuatan cepat otomatis untuk membuat infrastruktur direktori, Anda harus menyelaraskan penyeimbang beban secara manual di depan pengontrol direktori saat alamat IP direktori berubah. Jika Anda menggunakan metode quick create, alamat IP direktori tidak secara otomatis selaras dengan load balancer.

Saat menggunakan antarmuka baris AWS ParallelCluster perintah (CLI) atau API, Anda hanya membayar AWS sumber daya yang dibuat saat Anda membuat atau memperbarui AWS ParallelCluster gambar dan cluster. Untuk informasi selengkapnya, lihat AWS Layanan yang digunakan oleh AWS ParallelCluster.

AWS ParallelCluster UI dibangun di atas arsitektur tanpa server dan Anda dapat menggunakannya dalam kategori Tingkat AWS Gratis untuk sebagian besar kasus. Untuk informasi selengkapnya, lihat AWS ParallelClusterBiaya UI.

Prasyarat

Saat Anda membaca tutorial, gantiinputs highlighted in red, seperti region-id dand-abcdef01234567890, dengan nama dan ID Anda sendiri. Ganti 0123456789012 dengan Akun AWS nomor Anda.

Pilih tab Otomatis untuk membuat infrastruktur Active Directory (AD) dengan templat buat AWS CloudFormation cepat.

Pilih tab Manual untuk membuat infrastruktur AD secara manual.

  1. Masuk ke AWS Management Console.

  2. Buka CloudFormation Quick Create (region us-east-1) untuk membuat sumber daya berikut di konsol: CloudFormation

    • VPC dengan dua subnet dan routing untuk akses publik, jika tidak ada VPC yang ditentukan.

    • Sebuah AWS Managed Microsoft AD.

    • Instans Amazon EC2 yang bergabung dengan AD yang dapat Anda gunakan untuk mengelola direktori.

  3. Di bagian Quick create stack page Parameters, masukkan kata sandi untuk parameter berikut:

    • AdminPassword

    • ReadOnlyPassword

    • UserPassword

    Catat kata sandi. Anda menggunakannya nanti dalam tutorial ini.

  4. Untuk DomainName, masukkan corp.example.com

  5. Untuk Keypair, masukkan nama key pair Amazon EC2.

  6. Centang kotak untuk mengetahui setiap kemampuan akses di bagian bawah halaman.

  7. Pilih Buat tumpukan.

  8. Setelah CloudFormation tumpukan mencapai CREATE_COMPLETE status, pilih tab Output dari tumpukan. Catat nama sumber daya keluaran dan ID karena Anda perlu menggunakannya di langkah selanjutnya. Output memberikan informasi yang diperlukan untuk membuat cluster.

    Diagram yang menunjukkan output tumpukan yang dibuat di file. AWS Management Console
  9. Untuk menyelesaikan latihan(Opsional) Langkah 2: Kelola pengguna dan grup AD, Anda memerlukan ID direktori. Pilih Sumber Daya dan gulir ke bawah untuk mencatat ID direktori.

  10. Lanjutkan di (Opsional) Langkah 2: Kelola pengguna dan grup AD atauLangkah 3: Buat cluster.

Buat VPC untuk layanan direktori dengan dua subnet di Availability Zone yang berbeda dan file. AWS Managed Microsoft AD

catatan
  • Direktori dan nama domain adalahcorp.example.com. Nama pendeknya adalahCORP.

  • Ubah Admin kata sandi dalam skrip.

  • Active Directory (AD) membutuhkan waktu setidaknya 15 menit untuk membuatnya.

Gunakan skrip Python berikut untuk membuat VPC, subnet, dan sumber daya AD di lokal Anda. Wilayah AWS Simpan file ini sebagai ad.py dan jalankan.

import boto3 import time from pprint import pprint vpc_name = "PclusterVPC" ad_domain = "corp.example.com" admin_password = "asdfASDF1234" Amazon EC2 = boto3.client("ec2") ds = boto3.client("ds") region = boto3.Session().region_name # Create the VPC, Subnets, IGW, Routes vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"] vpc_id = vpc["VpcId"] time.sleep(30) ec2.create_tags(Resources=[vpc_id], Tags=[{"Key": "Name", "Value": vpc_name}]) subnet1 = ec2.create_subnet(VpcId=vpc_id, CidrBlock="10.0.0.0/17", AvailabilityZone=f"{region}a")["Subnet"] subnet1_id = subnet1["SubnetId"] time.sleep(30) ec2.create_tags(Resources=[subnet1_id], Tags=[{"Key": "Name", "Value": f"{vpc_name}/subnet1"}]) ec2.modify_subnet_attribute(SubnetId=subnet1_id, MapPublicIpOnLaunch={"Value": True}) subnet2 = ec2.create_subnet(VpcId=vpc_id, CidrBlock="10.0.128.0/17", AvailabilityZone=f"{region}b")["Subnet"] subnet2_id = subnet2["SubnetId"] time.sleep(30) ec2.create_tags(Resources=[subnet2_id], Tags=[{"Key": "Name", "Value": f"{vpc_name}/subnet2"}]) ec2.modify_subnet_attribute(SubnetId=subnet2_id, MapPublicIpOnLaunch={"Value": True}) igw = ec2.create_internet_gateway()["InternetGateway"] ec2.attach_internet_gateway(InternetGatewayId=igw["InternetGatewayId"], VpcId=vpc_id) route_table = ec2.describe_route_tables(Filters=[{"Name": "vpc-id", "Values": [vpc_id]}])["RouteTables"][0] ec2.create_route(RouteTableId=route_table["RouteTableId"], DestinationCidrBlock="0.0.0.0/0", GatewayId=igw["InternetGatewayId"]) ec2.modify_vpc_attribute(VpcId=vpc_id, EnableDnsSupport={"Value": True}) ec2.modify_vpc_attribute(VpcId=vpc_id, EnableDnsHostnames={"Value": True}) # Create the Active Directory ad = ds.create_microsoft_ad( Name=ad_domain, Password=admin_password, Description="ParallelCluster AD", VpcSettings={"VpcId": vpc_id, "SubnetIds": [subnet1_id, subnet2_id]}, Edition="Standard", ) directory_id = ad["DirectoryId"] # Wait for completion print("Waiting for the directory to be created...") directories = ds.describe_directories(DirectoryIds=[directory_id])["DirectoryDescriptions"] directory = directories[0] while directory["Stage"] in {"Requested", "Creating"}: time.sleep(3) directories = ds.describe_directories(DirectoryIds=[directory_id])["DirectoryDescriptions"] directory = directories[0] dns_ip_addrs = directory["DnsIpAddrs"] pprint({"directory_id": directory_id, "vpc_id": vpc_id, "subnet1_id": subnet1_id, "subnet2_id": subnet2_id, "dns_ip_addrs": dns_ip_addrs})

Berikut ini adalah contoh output dari script Python.

{ "directory_id": "d-abcdef01234567890", "dns_ip_addrs": ["192.0.2.254", "203.0.113.237"], "subnet1_id": "subnet-021345abcdef6789", "subnet2_id": "subnet-1234567890abcdef0", "vpc_id": "vpc-021345abcdef6789" }

Catat nama sumber daya keluaran dan ID. Anda menggunakannya di langkah selanjutnya.

Setelah skrip selesai, lanjutkan ke langkah berikutnya.

New Amazon EC2 console
  1. Masuk ke AWS Management Console.

  2. Jika Anda tidak memiliki peran dengan kebijakan yang tercantum di langkah 4 terlampir, buka konsol IAM di https://console.aws.amazon.com/iam/. Jika tidak, lewati ke langkah 5.

  3. Buat ResetUserPassword kebijakan, ganti konten berwarna merah yang disorot dengan ID, ID Akun, dan ID direktori dari output skrip yang Anda jalankan untuk membuat AD. Wilayah AWS

    ResetUserPassword

    { "Statement": [ { "Action": [ "ds:ResetUserPassword" ], "Resource": "arn:aws:ds:region-id:123456789012:directory/d-abcdef01234567890", "Effect": "Allow" } ] }
  4. Buat peran IAM dengan kebijakan berikut terlampir.

  5. Buka konsol Amazon EC2 di https://console.aws.amazon.com/ec2/.

  6. Di Dasbor Amazon EC2, pilih Launch Instance.

  7. Di Application and OS Images, pilih Amazon Linux 2 AMI terbaru.

  8. Untuk jenis Instance, pilih t2.micro.

  9. Untuk Key pair, pilih key pair.

  10. Untuk pengaturan Jaringan, pilih Edit.

  11. Untuk VPC, pilih direktori VPC.

  12. Gulir ke bawah dan pilih Detail lanjutan.

  13. Di Detail lanjutan, Domain bergabung direktori, pilihcorp.example.com.

  14. Untuk profil Instans IAM, pilih peran yang Anda buat di langkah 1 atau peran dengan kebijakan yang tercantum di langkah 4 terlampir.

  15. Dalam Ringkasan pilih Launch instance.

  16. Catat ID Instance (misalnya, i-1234567890abcdef0) dan tunggu hingga instance selesai diluncurkan.

  17. Setelah instance diluncurkan, lanjutkan ke langkah berikutnya.

Old Amazon EC2 console
  1. Masuk ke AWS Management Console.

  2. Jika Anda tidak memiliki peran dengan kebijakan yang tercantum di langkah 4 terlampir, buka konsol IAM di https://console.aws.amazon.com/iam/. Jika tidak, lewati ke langkah 5.

  3. Buat ResetUserPassword kebijakan. Ganti konten yang disorot merah dengan Wilayah AWS Akun AWS ID, ID, dan ID direktori Anda dari output skrip yang Anda jalankan untuk membuat Active Directory (AD).

    ResetUserPassword

    { "Statement": [ { "Action": [ "ds:ResetUserPassword" ], "Resource": "arn:aws:ds:region-id:123456789012:directory/d-abcdef01234567890", "Effect": "Allow" } ] }
  4. Buat peran IAM dengan kebijakan berikut terlampir.

  5. Buka konsol Amazon EC2 di https://console.aws.amazon.com/ec2/.

  6. Di Dasbor Amazon EC2, pilih Launch Instance.

  7. Di Application and OS Images, pilih Amazon Linux 2 AMI terbaru.

  8. Untuk jenis Instance, piliht2.micro.

  9. Untuk Key pair, pilih key pair.

  10. Di Pengaturan jaringan, pilih Edit.

  11. Di Pengaturan jaringan, VPC, pilih direktori VPC.

  12. Gulir ke bawah dan pilih Detail lanjutan.

  13. Di Detail lanjutan, Domain bergabung direktori, pilihcorp.example.com.

  14. Di Detail lanjutan, Profil instans, pilih peran yang Anda buat di langkah 1 atau peran dengan kebijakan yang tercantum di langkah 4 terlampir.

  15. Dalam Ringkasan pilih Launch instance.

  16. Catat ID Instance (misalnya,i-1234567890abcdef0) dan tunggu instance selesai diluncurkan.

  17. Setelah instance diluncurkan, lanjutkan ke langkah berikutnya.

  1. Hubungkan ke instans Anda dan bergabunglah dengan ranah AD sebagaiadmin.

    Jalankan perintah berikut untuk terhubung ke instance.

    $ INSTANCE_ID="i-1234567890abcdef0"
    $ PUBLIC_IP=$(aws ec2 describe-instances \ --instance-ids $INSTANCE_ID \ --query "Reservations[0].Instances[0].PublicIpAddress" \ --output text)
    $ ssh -i ~/.ssh/keys/keypair.pem ec2-user@$PUBLIC_IP
  2. Instal perangkat lunak yang diperlukan dan bergabunglah dengan dunia.
    $ sudo yum -y install sssd realmd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients policycoreutils-python
  3. Ganti kata sandi admin dengan admin kata sandi Anda.
    $ ADMIN_PW="asdfASDF1234"
    $ echo $ADMIN_PW | sudo realm join -U Admin corp.example.com Password for Admin:

    Jika sebelumnya telah berhasil, Anda bergabung ke ranah dan dapat melanjutkan ke langkah berikutnya.

  1. Buat ReadOnlyUser dan pengguna tambahan.

    Pada langkah ini, Anda menggunakan alat adcli dan openldap-client yang Anda instal pada langkah sebelumnya.

    $ echo $ADMIN_PW | adcli create-user -x -U Admin --domain=corp.example.com --display-name=ReadOnlyUser ReadOnlyUser
    $ echo $ADMIN_PW | adcli create-user -x -U Admin --domain=corp.example.com --display-name=user000 user000
  2. Verifikasi pengguna dibuat:

    Direktori alamat IP DNS adalah output dari skrip Python.

    $ DIRECTORY_IP="192.0.2.254"
    $ ldapsearch -x -h $DIRECTORY_IP -D Admin -w $ADMIN_PW -b "cn=ReadOnlyUser,ou=Users,ou=CORP,dc=corp,dc=example,dc=com"
    $ ldapsearch -x -h $DIRECTORY_IP -D Admin -w $ADMIN_PW -b "cn=user000,ou=Users,ou=CORP,dc=corp,dc=example,dc=com"

    Secara default, saat Anda membuat pengguna denganad-cli, pengguna dinonaktifkan.

  3. Setel ulang dan aktifkan kata sandi pengguna dari mesin lokal Anda:

    Keluar dari instans Amazon EC2 Anda.

    catatan
    • ro-p@ssw0rdadalah kata sandi dariReadOnlyUser, diambil dari AWS Secrets Manager.

    • user-p@ssw0rdadalah kata sandi pengguna cluster yang disediakan saat Anda menghubungkan (ssh) ke cluster.

    directory-idIni adalah output dari skrip Python.

    $ DIRECTORY_ID="d-abcdef01234567890"
    $ aws ds reset-user-password \ --directory-id $DIRECTORY_ID \ --user-name "ReadOnlyUser" \ --new-password "ro-p@ssw0rd" \ --region "region-id"
    $ aws ds reset-user-password \ --directory-id $DIRECTORY_ID \ --user-name "user000" \ --new-password "user-p@ssw0rd" \ --region "region-id"
  4. Tambahkan kata sandi ke rahasia Secrets Manager.

    Sekarang setelah Anda membuat ReadOnlyUser dan mengatur kata sandi, simpan dalam rahasia yang AWS ParallelCluster digunakan untuk memvalidasi login.

    Gunakan Secrets Manager untuk membuat rahasia baru untuk menyimpan kata sandi ReadOnlyUser sebagai nilai. Format nilai rahasia harus berupa teks biasa saja (bukan format JSON). Catat rahasia ARN untuk langkah-langkah masa depan.

    $ aws secretsmanager create-secret --name "ADSecretPassword" \ --region region_id \ --secret-string "ro-p@ssw0rd" \ --query ARN \ --output text arn:aws:secretsmanager:region-id:123456789012:secret:ADSecretPassword-1234

Buat catatan ID sumber daya. Anda menggunakannya dalam langkah-langkah nanti.

  1. Hasilkan sertifikat domain, secara lokal.
    $ PRIVATE_KEY="corp-example-com.key" CERTIFICATE="corp-example-com.crt" printf ".\n.\n.\n.\n.\ncorp.example.com\n.\n" | openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout $PRIVATE_KEY -days 365 -out $CERTIFICATE
  2. Simpan sertifikat ke Secrets Manager untuk membuatnya dapat diambil dari dalam cluster nanti.
    $ aws secretsmanager create-secret --name example-cert \ --secret-string file://$CERTIFICATE \ --region region-id { "ARN": "arn:aws:secretsmanager:region-id:123456789012:secret:example-cert-123abc", "Name": "example-cert", "VersionId": "14866070-092a-4d5a-bcdd-9219d0566b9c" }
  3. Tambahkan kebijakan berikut ke peran IAM yang Anda buat untuk bergabung dengan instans Amazon EC2 ke domain AD.

    PutDomainCertificateSecrets

    { "Statement": [ { "Action": [ "secretsmanager:PutSecretValue" ], "Resource": [ "arn:aws:secretsmanager:region-id:123456789012:secret:example-cert-123abc", ], "Effect": "Allow" } ] }
  4. Impor sertifikat ke AWS Certificate Manager (ACM).
    $ aws acm import-certificate --certificate fileb://$CERTIFICATE \ --private-key fileb://$PRIVATE_KEY \ --region region-id { "CertificateArn": "arn:aws:acm:region-id:123456789012:certificate/343db133-490f-4077-b8d4-3da5bfd89e72" }
  5. Buat dan penyeimbang beban yang diletakkan di depan titik akhir Active Directory.
    $ aws elbv2 create-load-balancer --name CorpExampleCom-NLB \ --type network \ --scheme internal \ --subnets subnet-1234567890abcdef0 subnet-021345abcdef6789 \ --region region-id { "LoadBalancers": [ { "LoadBalancerArn": "arn:aws:elasticloadbalancing:region-id:123456789012:loadbalancer/net/CorpExampleCom-NLB/3afe296bf4ba80d4", "DNSName": "CorpExampleCom-NLB-3afe296bf4ba80d4.elb.region-id.amazonaws.com", "CanonicalHostedZoneId": "Z2IFOLAFXWLO4F", "CreatedTime": "2022-05-05T12:56:55.988000+00:00", "LoadBalancerName": "CorpExampleCom-NLB", "Scheme": "internal", "VpcId": "vpc-021345abcdef6789", "State": { "Code": "provisioning" }, "Type": "network", "AvailabilityZones": [ { "ZoneName": "region-idb", "SubnetId": "subnet-021345abcdef6789", "LoadBalancerAddresses": [] }, { "ZoneName": "region-ida", "SubnetId": "subnet-1234567890abcdef0", "LoadBalancerAddresses": [] } ], "IpAddressType": "ipv4" } ] }
  6. Buat grup target yang menargetkan titik akhir Active Directory.
    $ aws elbv2 create-target-group --name CorpExampleCom-Targets --protocol TCP \ --port 389 \ --target-type ip \ --vpc-id vpc-021345abcdef6789 \ --region region-id { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:region-id:123456789012:targetgroup/CorpExampleCom-Targets/44577c583b695e81", "TargetGroupName": "CorpExampleCom-Targets", "Protocol": "TCP", "Port": 389, "VpcId": "vpc-021345abcdef6789", "HealthCheckProtocol": "TCP", "HealthCheckPort": "traffic-port", "HealthCheckEnabled": true, "HealthCheckIntervalSeconds": 30, "HealthCheckTimeoutSeconds": 10, "HealthyThresholdCount": 3, "UnhealthyThresholdCount": 3, "TargetType": "ip", "IpAddressType": "ipv4" } ] }
  7. Daftarkan titik akhir Active Directory (AD) ke dalam grup target.
    $ aws elbv2 register-targets --target-group-arn arn:aws:elasticloadbalancing:region-id:123456789012:targetgroup/CorpExampleCom-Targets/44577c583b695e81 \ --targets Id=192.0.2.254,Port=389 Id=203.0.113.237,Port=389 \ --region region-id
  8. Buat pendengar LB dengan sertifikat.
    $ aws elbv2 create-listener --load-balancer-arn arn:aws:elasticloadbalancing:region-id:123456789012:loadbalancer/net/CorpExampleCom-NLB/3afe296bf4ba80d4 \ --protocol TLS \ --port 636 \ --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region-id:123456789012:targetgroup/CorpExampleCom-Targets/44577c583b695e81 \ --ssl-policy ELBSecurityPolicy-TLS-1-2-2017-01 \ --certificates CertificateArn=arn:aws:acm:region-id:123456789012:certificate/343db133-490f-4077-b8d4-3da5bfd89e72 \ --region region-id "Listeners": [ { "ListenerArn": "arn:aws:elasticloadbalancing:region-id:123456789012:listener/net/CorpExampleCom-NLB/3afe296bf4ba80d4/a8f9d97318743d4b", "LoadBalancerArn": "arn:aws:elasticloadbalancing:region-id:123456789012:loadbalancer/net/CorpExampleCom-NLB/3afe296bf4ba80d4", "Port": 636, "Protocol": "TLS", "Certificates": [ { "CertificateArn": "arn:aws:acm:region-id:123456789012:certificate/343db133-490f-4077-b8d4-3da5bfd89e72" } ], "SslPolicy": "ELBSecurityPolicy-TLS-1-2-2017-01", "DefaultActions": [ { "Type": "forward", "TargetGroupArn": "arn:aws:elasticloadbalancing:region-id:123456789012:targetgroup/CorpExampleCom-Targets/44577c583b695e81", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:region-id:123456789012:targetgroup/CorpExampleCom-Targets/44577c583b695e81" } ] } } ] } ] }
  9. Buat zona yang dihosting untuk membuat domain dapat ditemukan di dalam VPC cluster.
    $ aws route53 create-hosted-zone --name corp.example.com \ --vpc VPCRegion=region-id,VPCId=vpc-021345abcdef6789 \ --caller-reference "ParallelCluster AD Tutorial" { "Location": "https://route53.amazonaws.com/2013-04-01/hostedzone/Z09020002B5MZQNXMSJUB", "HostedZone": { "Id": "/hostedzone/Z09020002B5MZQNXMSJUB", "Name": "corp.example.com.", "CallerReference": "ParallelCluster AD Tutorial", "Config": { "PrivateZone": true }, "ResourceRecordSetCount": 2 }, "ChangeInfo": { "Id": "/change/C05533343BF3IKSORW1TQ", "Status": "PENDING", "SubmittedAt": "2022-05-05T13:21:53.863000+00:00" }, "VPC": { "VPCRegion": "region-id", "VPCId": "vpc-021345abcdef6789" } }
  10. Buat file yang diberi nama recordset-change.json dengan konten berikut. HostedZoneIdadalah ID zona host kanonik dari penyeimbang beban.
    { "Changes": [ { "Action": "CREATE", "ResourceRecordSet": { "Name": "corp.example.com", "Type": "A", "Region": "region-id", "SetIdentifier": "example-active-directory", "AliasTarget": { "HostedZoneId": "Z2IFOLAFXWLO4F", "DNSName": "CorpExampleCom-NLB-3afe296bf4ba80d4.elb.region-id.amazonaws.com", "EvaluateTargetHealth": true } } } ] }
  11. Kirim perubahan recordset ke zona yang dihosting, kali ini menggunakan ID zona yang dihosting.
    $ aws route53 change-resource-record-sets --hosted-zone-id Z09020002B5MZQNXMSJUB \ --change-batch file://recordset-change.json { "ChangeInfo": { "Id": "/change/C0137926I56R3GC7XW2Y", "Status": "PENDING", "SubmittedAt": "2022-05-05T13:40:36.553000+00:00" } }
  12. Buat dokumen kebijakan policy.json dengan konten berikut.
    { "Version": "2012-10-17", "Statement": [ { "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:region-id:123456789012:secret:example-cert-abc123" ], "Effect": "Allow" } ] }
  13. Buat dokumen kebijakan yang diberi nama policy.json dengan konten berikut.
    $ aws iam create-policy --policy-name ReadCertExample \ --policy-document file://policy.json { "Policy": { "PolicyName": "ReadCertExample", "PolicyId": "ANPAUUXUVBC42VZSI4LDY", "Arn": "arn:aws:iam::123456789012:policy/ReadCertExample-efg456", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2022-05-05T13:42:18+00:00", "UpdateDate": "2022-05-05T13:42:18+00:00" } }
  14. Terus ikuti langkah-langkah di (Opsional) Langkah 2: Kelola pengguna dan grup AD atauLangkah 3: Buat cluster.

Pada langkah ini, Anda mengelola pengguna dan grup dari instans Amazon EC2 Amazon Linux 2 yang bergabung dengan domain Pengiriman Aktif (AD).

Jika Anda mengikuti jalur otomatis, mulai ulang dan masuk ke instans gabungan AD yang dibuat sebagai bagian dari otomatisasi.

Jika Anda mengikuti jalur manual, mulai ulang dan masuk ke instans yang Anda buat dan bergabung dengan AD di langkah-langkah sebelumnya.

Dalam langkah-langkah ini, Anda menggunakan alat adcli dan openldap-client yang diinstal dalam instance sebagai bagian dari langkah sebelumnya.

Masuk ke instans Amazon EC2 yang bergabung dengan domain AD
  1. Dari konsol Amazon EC2, pilih instans Amazon EC2 tanpa judul yang dibuat pada langkah sebelumnya. Status instance mungkin Dihentikan.

  2. Jika status instance Dihentikan, pilih status Instance dan kemudian Mulai instance.

  3. Setelah pemeriksaan status lulus, pilih instance dan pilih Connect dan SSH masuk ke instance.

Kelola pengguna dan grup saat masuk ke instans Amazon EC2 Amazon Linux 2 yang bergabung dengan AD

Ketika Anda menjalankan adcli perintah dengan -U "Admin" opsi, Anda diminta untuk memasukkan Admin kata sandi AD. Anda menyertakan Admin kata sandi AD sebagai bagian dari ldapsearch perintah.

  1. Buat pengguna.
    $ adcli create-user "clusteruser" --domain "corp.example.com" -U "Admin"
  2. Tetapkan kata sandi pengguna.
    $ aws --region "region-id" ds reset-user-password --directory-id "d-abcdef01234567890" --user-name "clusteruser" --new-password "new-p@ssw0rd"
  3. Buat grup.
    $ adcli create-group "clusterteam" --domain "corp.example.com" -U "Admin"
  4. Tambahkan pengguna ke grup.
    $ adcli add-member "clusterteam" "clusteruser" --domain "corp.example.com" -U "Admin"
  5. Jelaskan pengguna dan grup.

    Jelaskan semua pengguna.

    $ ldapsearch "(&(objectClass=user))" -x -h "192.0.2.254" -b "DC=corp,DC=example,DC=com" -D "CN=Admin,OU=Users,OU=CORP,DC=corp,DC=example,DC=com" -w "p@ssw0rd"

    Jelaskan pengguna tertentu.

    $ ldapsearch "(&(objectClass=user)(cn=clusteruser))" -x -h "192.0.2.254" -b "DC=corp,DC=example,DC=com" -D "CN=Admin,OU=Users,OU=CORP,DC=corp,DC=example,DC=com" -w "p@ssw0rd"

    Jelaskan semua pengguna dengan pola nama.

    $ ldapsearch "(&(objectClass=user)(cn=user*))" -x -h "192.0.2.254" -b "DC=corp,DC=example,DC=com" -D "CN=Admin,OU=Users,OU=CORP,DC=corp,DC=example,DC=com" -w "p@ssw0rd"

    Jelaskan semua pengguna yang merupakan bagian dari grup tertentu.

    $ ldapsearch "(&(objectClass=user)(memberOf=CN=clusterteam,OU=Users,OU=CORP,DC=corp,DC=example,DC=com))" -x -h "192.0.2.254" -b "DC=corp,DC=example,DC=com" -D "CN=Admin,OU=Users,OU=CORP,DC=corp,DC=example,DC=com" -w "p@ssw0rd"

    Jelaskan semua kelompok

    $ ldapsearch "objectClass=group" -x -h "192.0.2.254" -b "DC=corp,DC=example,DC=com" -D "CN=Admin,OU=Users,OU=CORP,DC=corp,DC=example,DC=com" -w "p@ssw0rd"

    Jelaskan kelompok tertentu

    $ ldapsearch "(&(objectClass=group)(cn=clusterteam))" -x -h "192.0.2.254" -b "DC=corp,DC=example,DC=com" -D "CN=Admin,OU=Users,OU=CORP,DC=corp,DC=example,DC=com" -w "p@ssw0rd"
  6. Hapus pengguna dari grup.
    $ adcli remove-member "clusterteam" "clusteruser" --domain "corp.example.com" -U "Admin"
  7. Hapus pengguna.
    $ adcli delete-user "clusteruser" --domain "corp.example.com" -U "Admin"
  8. Hapus grup.
    $ adcli delete-group "clusterteam" --domain "corp.example.com" -U "Admin"

Jika Anda belum keluar dari instans Amazon EC2, lakukan sekarang.

Lingkungan diatur untuk membuat cluster yang dapat mengautentikasi pengguna terhadap Active Directory (AD).

Buat konfigurasi cluster sederhana dan berikan pengaturan yang relevan untuk menghubungkan ke AD. Untuk informasi selengkapnya, lihat bagian DirectoryService.

Pilih salah satu konfigurasi klaster berikut dan salin ke file yang diberi namaldaps_config.yaml,ldaps_nocert_config.yaml, atauldap_config.yaml.

Kami menyarankan Anda memilih konfigurasi LDAPS dengan verifikasi sertifikat. Jika Anda memilih konfigurasi ini, Anda juga harus menyalin skrip bootstrap ke file yang diberi namaactive-directory.head.post.sh. Dan, Anda harus menyimpannya di bucket Amazon S3 seperti yang ditunjukkan dalam file konfigurasi.

catatan
Komponen-komponen berikut harus diubah.
  • KeyName: Salah satu keypair Amazon EC2 Anda.

  • SubnetId / SubnetIds: Salah satu ID subnet yang disediakan dalam output dari CloudFormation quick create stack (tutorial otomatis) atau skrip python (tutorial manual).

  • Region: Wilayah tempat Anda membuat infrastruktur AD.

  • DomainAddr: Alamat IP ini adalah salah satu alamat DNS dari layanan AD Anda.

  • PasswordSecretArn: Nama Sumber Daya Amazon (ARN) dari rahasia yang berisi kata sandi untuk file. DomainReadOnlyUser

  • BucketName: Nama bucket yang menyimpan skrip bootstrap.

  • AdditionalPolicies/Policy: Nama Sumber Daya Amazon (ARN) dari kebijakan sertifikasi domain baca. ReadCertExample

  • CustomActions/OnNodeConfigured/Args: Nama Sumber Daya Amazon (ARN) rahasia yang memegang kebijakan sertifikasi domain.

Untuk postur keamanan yang lebih baik, kami sarankan untuk menggunakan AllowedIps konfigurasi HeadNodeSsh//untuk membatasi akses SSH ke node kepala.

Region: region-id Image: Os: alinux2 HeadNode: InstanceType: t2.micro Networking: SubnetId: subnet-abcdef01234567890 Ssh: KeyName: keypair Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::123456789012:policy/ReadCertExample S3Access: - BucketName: my-bucket EnableWriteAccess: false KeyName: bootstrap/active-directory/active-directory.head.post.sh CustomActions: OnNodeConfigured: Script: s3://my-bucket/bootstrap/active-directory/active-directory.head.post.sh Args: - arn:aws:secretsmanager:region-id:123456789012:secret:example-cert-123abc - /opt/parallelcluster/shared/directory_service/domain-certificate.crt Scheduling: Scheduler: slurm SlurmQueues: - Name: queue0 ComputeResources: - Name: queue0-t2-micro InstanceType: t2.micro MinCount: 1 MaxCount: 10 Networking: SubnetIds: - subnet-abcdef01234567890 DirectoryService: DomainName: corp.example.com DomainAddr: ldaps://corp.example.com PasswordSecretArn: arn:aws:secretsmanager:region-id:123456789012:secret:ADSecretPassword-1234 DomainReadOnlyUser: cn=ReadOnlyUser,ou=Users,ou=CORP,dc=corp,dc=example,dc=com LdapTlsCaCert: /opt/parallelcluster/shared/directory_service/domain-certificate.crt LdapTlsReqCert: hard

Skrip Bootstrap

Setelah Anda membuat file bootstrap dan sebelum Anda mengunggahnya ke bucket S3 Anda, jalankan chmod +x active-directory.head.post.sh untuk memberikan izin AWS ParallelCluster jalankan.

#!/bin/bash set -e CERTIFICATE_SECRET_ARN="$1" CERTIFICATE_PATH="$2" [[ -z $CERTIFICATE_SECRET_ARN ]] && echo "[ERROR] Missing CERTIFICATE_SECRET_ARN" && exit 1 [[ -z $CERTIFICATE_PATH ]] && echo "[ERROR] Missing CERTIFICATE_PATH" && exit 1 source /etc/parallelcluster/cfnconfig REGION="${cfn_region:?}" mkdir -p $(dirname $CERTIFICATE_PATH) aws secretsmanager get-secret-value --region $REGION --secret-id $CERTIFICATE_SECRET_ARN --query SecretString --output text > $CERTIFICATE_PATH
catatan
Komponen berikut harus diubah.
  • KeyName: Salah satu keypair Amazon EC2 Anda.

  • SubnetId / SubnetIds: Salah satu ID subnet yang ada di output dari CloudFormation quick create stack (tutorial otomatis) atau skrip python (tutorial manual).

  • Region: Wilayah tempat Anda membuat infrastruktur AD.

  • DomainAddr: Alamat IP ini adalah salah satu alamat DNS dari layanan AD Anda.

  • PasswordSecretArn: Nama Sumber Daya Amazon (ARN) dari rahasia yang berisi kata sandi untuk file. DomainReadOnlyUser

Untuk postur keamanan yang lebih baik, kami sarankan untuk menggunakan AllowedIps konfigurasi HeadNode /Ssh/ untuk membatasi akses SSH ke node kepala.

Region: region-id Image: Os: alinux2 HeadNode: InstanceType: t2.micro Networking: SubnetId: subnet-abcdef01234567890 Ssh: KeyName: keypair Scheduling: Scheduler: slurm SlurmQueues: - Name: queue0 ComputeResources: - Name: queue0-t2-micro InstanceType: t2.micro MinCount: 1 MaxCount: 10 Networking: SubnetIds: - subnet-abcdef01234567890 DirectoryService: DomainName: corp.example.com DomainAddr: ldaps://corp.example.com PasswordSecretArn: arn:aws:secretsmanager:region-id:123456789012:secret:ADSecretPassword-1234 DomainReadOnlyUser: cn=ReadOnlyUser,ou=Users,ou=CORP,dc=corp,dc=example,dc=com LdapTlsReqCert: never
catatan
Komponen berikut harus diubah.
  • KeyName: Salah satu keypair Amazon EC2 Anda.

  • SubnetId / SubnetIds: Salah satu ID subnet yang disediakan dalam output dari CloudFormation quick create stack (tutorial otomatis) atau skrip python (tutorial manual).

  • Region: Wilayah tempat Anda membuat infrastruktur AD.

  • DomainAddr: Alamat IP ini adalah salah satu alamat DNS dari layanan AD Anda.

  • PasswordSecretArn: Nama Sumber Daya Amazon (ARN) dari rahasia yang berisi kata sandi untuk file. DomainReadOnlyUser

Untuk postur keamanan yang lebih baik, kami sarankan untuk menggunakan AllowedIps konfigurasi HeadNode /Ssh/ untuk membatasi akses SSH ke node kepala.

Region: region-id Image: Os: alinux2 HeadNode: InstanceType: t2.micro Networking: SubnetId: subnet-abcdef01234567890 Ssh: KeyName: keypair Scheduling: Scheduler: slurm SlurmQueues: - Name: queue0 ComputeResources: - Name: queue0-t2-micro InstanceType: t2.micro MinCount: 1 MaxCount: 10 Networking: SubnetIds: - subnet-abcdef01234567890 DirectoryService: DomainName: dc=corp,dc=example,dc=com DomainAddr: ldap://192.0.2.254,ldap://203.0.113.237 PasswordSecretArn: arn:aws:secretsmanager:region-id:123456789012:secret:ADSecretPassword-1234 DomainReadOnlyUser: cn=ReadOnlyUser,ou=Users,ou=CORP,dc=corp,dc=example,dc=com AdditionalSssdConfigs: ldap_auth_disable_tls_never_use_in_production: True

Buat klaster Anda dengan perintah berikut.

$ pcluster create-cluster --cluster-name "ad-cluster" --cluster-configuration "./ldaps_config.yaml" { "cluster": { "clusterName": "pcluster", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:region-id:123456789012:stack/ad-cluster/1234567-abcd-0123-def0-abcdef0123456", "region": "region-id", "version": 3.7.0, "clusterStatus": "CREATE_IN_PROGRESS" } }

Anda dapat menentukan status cluster dengan perintah berikut.

$ pcluster describe-cluster -n ad-cluster --region "region-id" --query "clusterStatus"

Outputnya adalah sebagai berikut.

"CREATE_IN_PROGRESS" / "CREATE_COMPLETE"

Saat status mencapai"CREATE_COMPLETE", masuk dengan nama pengguna dan kata sandi yang dibuat.

$ HEAD_NODE_IP=$(pcluster describe-cluster -n "ad-cluster" --region "region-id" --query headNode.publicIpAddress | xargs echo)
$ ssh user000@$HEAD_NODE_IP

Anda dapat masuk tanpa kata sandi dengan memberikan SSH kunci yang dibuat untuk pengguna baru di/home/user000@HEAD_NODE_IP/.ssh/id_rsa.

Jika ssh perintah berhasil, Anda telah berhasil terhubung ke cluster sebagai pengguna yang diautentikasi untuk menggunakan Active Directory (AD).

  1. Dari mesin lokal Anda, hapus cluster.
    $ pcluster delete-cluster --cluster-name "ad-cluster" --region "region-id" { "cluster": { "clusterName": "ad-cluster", "cloudformationStackStatus": "DELETE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:region-id:123456789012:stack/ad-cluster/1234567-abcd-0123-def0-abcdef0123456", "region": "region-id", "version": "3.7.0", "clusterStatus": "DELETE_IN_PROGRESS" } }
  2. Periksa kemajuan cluster yang dihapus.
    $ pcluster describe-cluster --cluster-name "ad-cluster" --region "region-id" --query "clusterStatus" "DELETE_IN_PROGRESS"

    Setelah cluster berhasil dihapus, lanjutkan ke langkah berikutnya.

Hapus sumber daya Direktori Aktif
  1. Dari https://console.aws.amazon.com/cloudformation/.

  2. Di panel navigasi, pilih Stacks (Tumpukan).

  3. Dari daftar tumpukan, pilih tumpukan AD (misalnya,pcluster-ad).

  4. Pilih Hapus.

  1. Hapus instans Amazon EC2.
    1. Dari https://console.aws.amazon.com/ec2/, pilih Instans di panel navigasi.

    2. Dari daftar instance, pilih instance yang Anda buat untuk menambahkan pengguna ke direktori.

    3. Pilih status Instance, lalu Hentikan instance.

  2. Hapus zona yang dihosting.
    1. Buat recordset-delete.json dengan konten berikut. Dalam contoh ini, HostedZoneId adalah ID zona host kanonik dari penyeimbang beban.

      { "Changes": [ { "Action": "DELETE", "ResourceRecordSet": { "Name": "corp.example.com", "Type": "A", "Region": "region-id", "SetIdentifier": "pcluster-active-directory", "AliasTarget": { "HostedZoneId": "Z2IFOLAFXWLO4F", "DNSName": "CorpExampleCom-NLB-3afe296bf4ba80d4.elb.region-id.amazonaws.com", "EvaluateTargetHealth": true } } } ] }
    2. Kirimkan perubahan recordset ke zona yang dihosting menggunakan ID zona yang dihosting.

      $ aws route53 change-resource-record-sets --hosted-zone-id Z09020002B5MZQNXMSJUB \ --change-batch file://recordset-delete.json { "ChangeInfo": { "Id": "/change/C04853642A0TH2TJ5NLNI", "Status": "PENDING", "SubmittedAt": "2022-05-05T14:25:51.046000+00:00" } }
    3. Hapus zona yang dihosting.

      $ aws route53 delete-hosted-zone --id Z09020002B5MZQNXMSJUB { "ChangeInfo": { "Id": "/change/C0468051QFABTVHMDEG9", "Status": "PENDING", "SubmittedAt": "2022-05-05T14:26:13.814000+00:00" } }
  3. Hapus pendengar LB.
    $ aws elbv2 delete-listener \ --listener-arn arn:aws:elasticloadbalancing:region-id:123456789012:listener/net/CorpExampleCom-NLB/3afe296bf4ba80d4/a8f9d97318743d4b --region region-id
  4. Hapus grup target.
    $ aws elbv2 delete-target-group \ --target-group-arn arn:aws:elasticloadbalancing:region-id:123456789012:targetgroup/CorpExampleCom-Targets/44577c583b695e81 --region region-id
  5. Hapus penyeimbang beban.
    $ aws elbv2 delete-load-balancer \ --load-balancer-arn arn:aws:elasticloadbalancing:region-id:123456789012:loadbalancer/net/CorpExampleCom-NLB/3afe296bf4ba80d4 --region region-id
  6. Hapus kebijakan yang digunakan klaster untuk membaca sertifikat dari Secrets Manager.
    $ aws iam delete-policy --policy-arn arn:aws:iam::123456789012:policy/ReadCertExample
  7. Hapus rahasia yang berisi sertifikat domain.
    $ aws secretsmanager delete-secret \ --secret-id arn:aws:secretsmanager:region-id:123456789012:secret:example-cert-123abc \ --region region-id { "ARN": "arn:aws:secretsmanager:region-id:123456789012:secret:example-cert-123abc", "Name": "example-cert", "DeletionDate": "2022-06-04T16:27:36.183000+02:00" }
  8. Hapus sertifikat dari ACM.
    $ aws acm delete-certificate \ --certificate-arn arn:aws:acm:region-id:123456789012:certificate/343db133-490f-4077-b8d4-3da5bfd89e72 --region region-id
  9. Hapus sumber daya Active Directory (AD).
    1. Dapatkan ID sumber daya berikut dari output skrip ad.py python:

      • ID IKLAN

      • ID subnet AD

      • ID VPC IKLAN

    2. Hapus direktori dengan menjalankan perintah berikut.

      $ aws ds delete-directory --directory-id d-abcdef0123456789 --region region-id { "DirectoryId": "d-abcdef0123456789" }
    3. Buat daftar grup keamanan di VPC.

      $ aws ec2 describe-security-groups --filters '[{"Name":"vpc-id","Values":["vpc-07614ade95ebad1bc"]}]' --region region-id
    4. Hapus grup keamanan khusus.

      $ aws ec2 delete-security-group --group-id sg-021345abcdef6789 --region region-id
    5. Hapus subnet.

      $ aws ec2 delete-subnet --subnet-id subnet-1234567890abcdef --region region-id
      $ aws ec2 delete-subnet --subnet-id subnet-021345abcdef6789 --region region-id
    6. Jelaskan gateway internet.

      $ aws ec2 describe-internet-gateways \ --filters Name=attachment.vpc-id,Values=vpc-021345abcdef6789 \ --region region-id { "InternetGateways": [ { "Attachments": [ { "State": "available", "VpcId": "vpc-021345abcdef6789" } ], "InternetGatewayId": "igw-1234567890abcdef", "OwnerId": "123456789012", "Tags": [] } ] }
    7. Lepaskan gateway internet.

      $ aws ec2 detach-internet-gateway \ --internet-gateway-id igw-1234567890abcdef \ --vpc-id vpc-021345abcdef6789 \ --region region-id
    8. Hapus gateway internet.

      $ aws ec2 delete-internet-gateway \ --internet-gateway-id igw-1234567890abcdef \ --region region-id
    9. Hapus VPC.

      $ aws ec2 delete-vpc \ --vpc-id vpc-021345abcdef6789 \ --region region-id
    10. Hapus rahasia yang berisi ReadOnlyUser kata sandi.

      $ aws secretsmanager delete-secret \ --secret-id arn:aws:secretsmanager:region-id:123456789012:secret:ADSecretPassword-1234" \ --region region-id