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
-
AWS ParallelCluster diinstal.
-
AWS CLI Itu diinstal dan dikonfigurasi.
-
Anda memiliki key pair Amazon EC2.
-
Anda memiliki peran IAM dengan izin yang diperlukan untuk menjalankan CLIpcluster.
Saat Anda membaca tutorial, ganti
, seperti inputs highlighted in red
danregion-id
, dengan nama dan ID Anda sendiri. Ganti d-abcdef01234567890
dengan Akun AWS nomor Anda.0123456789012
Pilih tab Otomatis untuk membuat infrastruktur Active Directory (AD) dengan templat buat AWS CloudFormation cepat.
Pilih tab Manual untuk membuat infrastruktur AD secara manual.
-
Masuk ke AWS Management Console.
-
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.
-
-
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.
-
-
Untuk DomainName, masukkan
corp.example.com
-
Untuk Keypair, masukkan nama key pair Amazon EC2.
-
Centang kotak untuk mengetahui setiap kemampuan akses di bagian bawah halaman.
-
Pilih Buat tumpukan.
-
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. -
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.
-
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 adalah
corp.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.
-
Hubungkan ke instans Anda dan bergabunglah dengan ranah AD sebagai
admin
.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 -
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
-
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.
-
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
-
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 dengan
ad-cli
, pengguna dinonaktifkan. -
Setel ulang dan aktifkan kata sandi pengguna dari mesin lokal Anda:
Keluar dari instans Amazon EC2 Anda.
catatan
-
ro-p@ssw0rd
adalah kata sandi dariReadOnlyUser
, diambil dari AWS Secrets Manager. -
user-p@ssw0rd
adalah kata sandi pengguna cluster yang disediakan saat Anda menghubungkan (ssh
) ke cluster.
directory-id
Ini 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"
-
-
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"
\ --regionregion_id
\ --secret-string"ro-p@ssw0rd"
\ --query ARN \ --output textarn:aws:secretsmanager:region-id:123456789012:secret:ADSecretPassword-1234
Buat catatan ID sumber daya. Anda menggunakannya dalam langkah-langkah nanti.
-
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 -
Simpan sertifikat ke Secrets Manager untuk membuatnya dapat diambil dari dalam cluster nanti.
$
aws secretsmanager create-secret --name example-cert \ --secret-string file://$CERTIFICATE \ --regionregion-id
{ "ARN": "arn:aws:secretsmanager:region-id:123456789012:secret:example-cert-123abc", "Name": "example-cert", "VersionId": "14866070-092a-4d5a-bcdd-9219d0566b9c" }
-
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" } ] } -
Impor sertifikat ke AWS Certificate Manager (ACM).
$
aws acm import-certificate --certificate fileb://$CERTIFICATE \ --private-key fileb://$PRIVATE_KEY \ --regionregion-id
{ "CertificateArn": "arn:aws:acm:region-id:123456789012:certificate/343db133-490f-4077-b8d4-3da5bfd89e72" }
-
Buat dan penyeimbang beban yang diletakkan di depan titik akhir Active Directory.
$
aws elbv2 create-load-balancer --name CorpExampleCom-NLB \ --type network \ --scheme internal \ --subnetssubnet-1234567890abcdef0 subnet-021345abcdef6789
\ --regionregion-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" } ] }
-
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-idvpc-021345abcdef6789
\ --regionregion-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" } ] }
-
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 \ --regionregion-id
-
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
\ --regionregion-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" } ] } } ] } ] }
-
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" } }
-
Buat file yang diberi nama
recordset-change.json
dengan konten berikut.HostedZoneId
adalah 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 } } } ] } -
Kirim perubahan recordset ke zona yang dihosting, kali ini menggunakan ID zona yang dihosting.
$
aws route53 change-resource-record-sets --hosted-zone-idZ09020002B5MZQNXMSJUB
\ --change-batch file://recordset-change.json{ "ChangeInfo": { "Id": "/change/C0137926I56R3GC7XW2Y", "Status": "PENDING", "SubmittedAt": "2022-05-05T13:40:36.553000+00:00" } }
-
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" } ] } -
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" } }
-
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
Masuk ke instans Amazon EC2 yang bergabung dengan domain AD
-
Dari konsol Amazon EC2, pilih instans Amazon EC2 tanpa judul yang dibuat pada langkah sebelumnya. Status instance mungkin Dihentikan.
-
Jika status instance Dihentikan, pilih status Instance dan kemudian Mulai instance.
-
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.
-
Buat pengguna.
$
adcli create-user
"clusteruser"
--domain"corp.example.com"
-U "Admin" -
Tetapkan kata sandi pengguna.
$
aws --region
"region-id"
ds reset-user-password --directory-id"d-abcdef01234567890"
--user-name"clusteruser"
--new-password"new-p@ssw0rd"
-
Buat grup.
$
adcli create-group
"clusterteam"
--domain"corp.example.com"
-U "Admin" -
Tambahkan pengguna ke grup.
$
adcli add-member
"clusterteam"
"clusteruser"
--domain"corp.example.com"
-U "Admin" -
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"
-
Hapus pengguna dari grup.
$
adcli remove-member
"clusterteam"
"clusteruser"
--domain"corp.
-U "Admin"example
.com" -
Hapus pengguna.
$
adcli delete-user
"clusteruser"
--domain"corp.
-U "Admin"example
.com" -
Hapus grup.
$
adcli delete-group
"clusterteam"
--domain"corp.
-U "Admin"example
.com"
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 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
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).
-
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" } }
-
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
-
Di panel navigasi, pilih Stacks (Tumpukan).
-
Dari daftar tumpukan, pilih tumpukan AD (misalnya,
pcluster-ad
). -
Pilih Hapus.
-
Hapus instans Amazon EC2.
-
Dari https://console.aws.amazon.com/ec2/
, pilih Instans di panel navigasi. -
Dari daftar instance, pilih instance yang Anda buat untuk menambahkan pengguna ke direktori.
-
Pilih status Instance, lalu Hentikan instance.
-
-
Hapus zona yang dihosting.
-
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 } } } ] } -
Kirimkan perubahan recordset ke zona yang dihosting menggunakan ID zona yang dihosting.
$
aws route53 change-resource-record-sets --hosted-zone-idZ09020002B5MZQNXMSJUB
\ --change-batch file://recordset-delete.json{ "ChangeInfo": { "Id": "/change/C04853642A0TH2TJ5NLNI", "Status": "PENDING", "SubmittedAt": "2022-05-05T14:25:51.046000+00:00" } }
-
Hapus zona yang dihosting.
$
aws route53 delete-hosted-zone --idZ09020002B5MZQNXMSJUB
{ "ChangeInfo": { "Id": "/change/C0468051QFABTVHMDEG9", "Status": "PENDING", "SubmittedAt": "2022-05-05T14:26:13.814000+00:00" } }
-
-
Hapus pendengar LB.
$
aws elbv2 delete-listener \ --listener-arn arn:aws:elasticloadbalancing:region-id
:123456789012
:listener/net/CorpExampleCom-NLB/3afe296bf4ba80d4/a8f9d97318743d4b
--regionregion-id
-
Hapus grup target.
$
aws elbv2 delete-target-group \ --target-group-arn arn:aws:elasticloadbalancing:region-id
:123456789012
:targetgroup/CorpExampleCom-Targets/44577c583b695e81
--regionregion-id
-
Hapus penyeimbang beban.
$
aws elbv2 delete-load-balancer \ --load-balancer-arn arn:aws:elasticloadbalancing:region-id
:123456789012
:loadbalancer/net/CorpExampleCom-NLB/3afe296bf4ba80d4
--regionregion-id
-
Hapus kebijakan yang digunakan klaster untuk membaca sertifikat dari Secrets Manager.
$
aws iam delete-policy --policy-arn arn:aws:iam::123456789012
:policy/ReadCertExample -
Hapus rahasia yang berisi sertifikat domain.
$
aws secretsmanager delete-secret \ --secret-id arn:aws:secretsmanager:region-id
:123456789012
:secret:example-cert-123abc
\ --regionregion-id
{ "ARN": "arn:aws:secretsmanager:region-id:123456789012:secret:example-cert-123abc", "Name": "example-cert", "DeletionDate": "2022-06-04T16:27:36.183000+02:00" }
-
Hapus sertifikat dari ACM.
$
aws acm delete-certificate \ --certificate-arn arn:aws:acm:region-id
:123456789012
:certificate/343db133-490f-4077-b8d4-3da5bfd89e72
--regionregion-id
-
Hapus sumber daya Active Directory (AD).
-
Dapatkan ID sumber daya berikut dari output skrip
ad.py
python:-
ID IKLAN
-
ID subnet AD
-
ID VPC IKLAN
-
-
Hapus direktori dengan menjalankan perintah berikut.
$
aws ds delete-directory --directory-idd-abcdef0123456789
--regionregion-id
{ "DirectoryId": "d-abcdef0123456789" }
-
Buat daftar grup keamanan di VPC.
$
aws ec2 describe-security-groups --filters '[{"Name":"vpc-id","Values":["vpc-07614ade95ebad1bc"]}]' --regionregion-id
-
Hapus grup keamanan khusus.
$
aws ec2 delete-security-group --group-idsg-021345abcdef6789
--regionregion-id
-
Hapus subnet.
$
aws ec2 delete-subnet --subnet-idsubnet-1234567890abcdef
--regionregion-id
$
aws ec2 delete-subnet --subnet-idsubnet-021345abcdef6789
--regionregion-id
-
Jelaskan gateway internet.
$
aws ec2 describe-internet-gateways \ --filters Name=attachment.vpc-id,Values=vpc-021345abcdef6789
\ --regionregion-id
{ "InternetGateways": [ { "Attachments": [ { "State": "available", "VpcId": "vpc-021345abcdef6789" } ], "InternetGatewayId": "igw-1234567890abcdef", "OwnerId": "123456789012", "Tags": [] } ] }
-
Lepaskan gateway internet.
$
aws ec2 detach-internet-gateway \ --internet-gateway-idigw-1234567890abcdef
\ --vpc-idvpc-021345abcdef6789
\ --regionregion-id
-
Hapus gateway internet.
$
aws ec2 delete-internet-gateway \ --internet-gateway-idigw-1234567890abcdef
\ --regionregion-id
-
Hapus VPC.
$
aws ec2 delete-vpc \ --vpc-idvpc-021345abcdef6789
\ --regionregion-id
-
Hapus rahasia yang berisi
ReadOnlyUser
kata sandi.$
aws secretsmanager delete-secret \ --secret-id arn:aws:secretsmanager:region-id
:123456789012
:secret:ADSecretPassword-1234
" \ --regionregion-id
-