معرفی Azure AD با نمونه های Terraform

معرفی
Azure Active Directory (Azure AD) راه حل جامع مبتنی بر ابر را برای مدیریت فهرست و هویت کارآمد به سازمان ها ارائه می دهد. Azure AD با مجموعه ای از ویژگی ها، از جمله مدیریت نام کاربری و رمز عبور، کنترل نقش و مجوزها، احراز هویت چند عاملی، و نظارت بر برنامه، ابزاری ضروری برای مشاغل در هر اندازه است. این مقاله به بررسی جنبههای کلیدی Azure AD میپردازد، از مدیریت کاربر شروع میشود، سپس واحدهای اداری، و در نهایت با مدیریت گروه پایان مییابد.
راه اندازی Terraform برای Azure AD
ابتدا باید ارائه دهندگانی را که قرار است استفاده کنیم را مشخص کنیم تا Terraform بداند کدام ارائه دهندگان را باید دانلود کند.
terraform {
required_providers {
azuread = {
source = "hashicorp/azuread"
version = "~> 2.15.0"
}
}
}
provider "azuread" {
tenant_id = "<your_azure_account_tenant_id>"
}
اگر اجرا کنیم terraform init
دستور پس از افزودن کد بالا به هر یک از فایل ها ( providers.tf
یک نام ترجیحی است ) در فهرست terraform، ارائه دهندگان مورد نیاز را دانلود می کند.
برای اینکه هر کدی که در این مقاله استفاده می کنیم کار کند، باید به حساب Azure خود احراز هویت کنیم تا تغییراتی که در کد ایجاد می کنیم واقعاً اتفاق بیفتد. سادهترین و توصیهشدهترین راه برای احراز هویت Terraform از طریق سرویس اصلی و راز مشتری است.
برای ایجاد یک سرویس اصلی، باید یک نقش Contributor برای Azure AD داشته باشیم. اگر آن را داشته باشیم، می توانیم با استفاده از دستور یک سرویس اصلی ایجاد کنیم az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<your-subscription-number>"
در Azure CLI که میتوانید از https://learn.microsoft.com/en-us/cli/azure/install-azure-cli اینجا دانلود کنید، اگر قبلاً این کار را نکردهاید. این یک پاسخ حاوی 4 فیلد مهم را که ما می خواهیم برمی گرداند. آنها id (subscription_id)، tenant_id، client_id و client_secret هستند. بهتر است یک فایل bash ایجاد کنید که حاوی مطالب زیر باشد.
export ARM_CLIENT_ID="<client_id>"
export ARM_CLIENT_SECRET="<client_secret>"
export ARM_TENANT_ID="<tenant_id>"
export ARM_SUBSCRIPTION_ID="subscription_id"
این اسکریپت را قبل از اجرای هر طرحی اجرا کنید. اکنون، ما تنظیمات را آماده کرده ایم و می توانیم ادامه دهیم. اگر در حین ایجاد سرویس اصلی خطایی دریافت کردید، مجوزهای خود را بررسی کنید و اگر مجوزهای شما خوب است، ممکن است اصل را ایجاد کرده باشد اما همچنان همانگونه که در مورد من رخ داد، خطا را ایجاد کرد.
مدیریت کاربران در Azure AD
Azure AD قابلیتهای مدیریت قوی کاربر را فراهم میکند که سازمانها را قادر میسازد تا به طور موثر بر هویت کاربران در فضای ابری ایجاد و نظارت کنند. در اینجا برخی از جنبه های ضروری مدیریت کاربران در Azure AD آورده شده است:
ویژگی های کاربر
-
مشخصات کاربر: هر کاربر یک نمایه دارد که حاوی اطلاعات اولیه مانند نام، آدرس ایمیل و اطلاعات تماس است.
-
نقش های تعیین شده: کاربران میتوانند نقشهای خاصی را در سازمان تعیین کنند و بر اساس مسئولیتهایشان به منابع و خدمات مختلف دسترسی داشته باشند.
-
واحدهای اداری: Azure AD امکان گروه بندی کاربران بر اساس واحدهای جغرافیایی یا سازمانی را فراهم می کند و مدیریت کارآمد کاربران را تسهیل می کند. واحدهای اداری (AU) سازمان ها را قادر می سازد تا مدیران خاصی را برای نظارت بر کاربران از مناطق یا واحدهای خاص تعیین کنند.
-
عضویت در گروه: کاربران می توانند بخشی از گروه های مختلف در Azure AD باشند که امکان مدیریت کارآمد مجوزها و حقوق دسترسی را فراهم می کند.
-
برنامه های کاربردی: Azure AD تخصیص برنامه ها را به کاربران امکان پذیر می کند و به آنها امکان دسترسی به نرم افزار و خدمات خاص را می دهد.
-
مجوزها: به کاربران می توان مجوزهایی اختصاص داد که دسترسی به ویژگی ها یا خدمات خاصی را در Azure AD فراهم می کند.
-
دستگاه ها: Azure AD دستگاه ها را با حساب های کاربری مرتبط می کند و اطلاعاتی در مورد دستگاه ها و نوع اتصال آنها ارائه می دهد، مانند Azure AD join یا Hybrid Azure AD join.
-
تکالیف نقش: نقش های کاربر منابعی را که کاربر به آنها دسترسی دارد، مشخص می کند و مجوزها و امتیازات آنها را مشخص می کند.
-
روش های احراز هویت: Azure AD از روشهای احراز هویت مختلف پشتیبانی میکند و به کاربران این امکان را میدهد تا بهترین روشی را انتخاب کنند که با نیازهایشان مطابقت دارد.
ایجاد کاربر با Terraform
resource "random_password" "test" {
length = 16
special = true
override_special = "!#$%^&*[]{}()"
}
resource "azuread_user" "test" {
user_principal_name = "<email-format-with-domain-specific-to-your-azure-account>"
display_name = "test"
password = random_password.test.result
force_password_change = true
given_name = "article"
surname = "terraform"
}
Terraform ما را مجبور می کند که برای هر کاربر یک رمز عبور ارائه دهیم. بنابراین، من ابتدا از این تولید کننده رمز تصادفی استفاده می کنم، یک رمز عبور تصادفی از آن دریافت می کنم https://registry.terraform.io/providers/hashicorp/random/3.0.0/docs/resources/password و آن را به کاربر ارسال می کنم. من همچنین کاربر را مجبور می کنم در اولین تلاش برای ورود رمز عبور را تغییر دهد تا کسی نتواند رمز عبور را از حالت terraform ببیند. فقط 3 فیلد اول در بلوک “azuread_user” بالا ضروری هستند و بقیه اختیاری هستند. بلوکهای «given_name» و «نام خانوادگی» را برای کمک به ایجاد گروه اضافه کردم.
میتوانید گزینههای بیشتری را که میتوانید هنگام ایجاد کاربر ارائه دهید، در اینجا بررسی کنید https://registry.terraform.io/providers/hashicorp/azuread/latest/docs/resources/user.
ساده سازی مدیریت کاربر با واحدهای اداری
Azure AD مفهوم واحدهای اداری (AUs) را برای سادهسازی مدیریت کاربر و امکان تفویض کارآمد مسئولیتهای اداری معرفی میکند. AU ها به ویژه برای گروه بندی کاربران بر اساس مناطق خاص یا واحدهای سازمانی مفید هستند. در اینجا آنچه باید در مورد واحدهای اداری Azure بدانید آمده است:
-
گروه بندی کاربران کارآمد: AU به سازماندهی کاربران بر اساس معیارهای جغرافیایی یا سازمانی کمک می کند و به مدیران این امکان را می دهد که کاربران را از مناطق یا واحدهای خاص به طور مؤثرتری مدیریت کنند.
-
تعیین مدیران: در هر واحد اداری، مدیران میتوانند نقشهای خاصی را برای انجام وظایف مرتبط با حوزههای مسئولیت خود اختصاص دهند. این نقشها عبارتند از: سرپرست احراز هویت، سرپرست گروهها، سرپرست میز کمک، سرپرست مجوز، مدیر رمز عبور و سرپرست کاربر.
با استفاده از واحدهای اداری Azure، سازمان ها می توانند مدیریت کاربر را ساده کنند، مسئولیت های اداری را محول کنند و از کنترل کارآمد بر دسترسی و مجوزهای کاربر بر اساس مناطق یا واحدهای سازمانی خاص اطمینان حاصل کنند.
AU ها به یک حساب درجه برتر نیاز دارند و من ندارم. بنابراین من نمی توانم یک نمونه زمینی آزمایش شده را در اینجا به شما نشان دهم.
سادهسازی همکاری کاربر با گروههای AD Azure
گروههای Azure AD راه مناسبی را برای مدیریت و سازماندهی کاربران در یک سازمان ارائه میکنند و همکاری و اشتراک منابع را ارتقا میدهند. دو نوع اصلی گروه در Azure AD وجود دارد:
-
گروه های امنیتی: گروه های امنیتی برای اعطای مجوز به مجموعه ای از کاربران برای منابع ابری خاص استفاده می شوند. آنها کنترل دسترسی را ساده می کنند و مدیریت کاربر را با ارائه مجموعه ای از مجوزها به گروهی از کاربران ساده می کنند.
-
گروه های مایکروسافت 365: گروههای Microsoft 365 همکاری را با فراهم کردن دسترسی به منابع مشترک مانند تقویمها، صندوقهای پستی و غیره تسهیل میکنند. آنها کاربران را قادر می سازند تا به طور یکپارچه روی پروژه ها و ابتکارات با هم کار کنند.
Azure AD روش های مختلفی را برای گروه بندی کاربران به گروه های امنیتی امکان پذیر می کند:
-
گروه بندی اختصاص داده شده: کاربران را می توان به صورت دستی به یک گروه اختصاص داد و کنترل مستقیم بر عضویت گروه را فراهم کرد.
-
گروه بندی کاربران پویا: گروه بندی کاربران به صورت پویا شامل تنظیم پارامترها بر اساس ویژگی های کاربر و افزودن یا حذف خودکار کاربران از گروه بر اساس معیارهای از پیش تعریف شده است.
-
گروه بندی دستگاه های پویا: مشابه گروه بندی کاربران پویا، گروه بندی دستگاه های پویا شامل تنظیم پارامترها بر اساس ویژگی های دستگاه و گروه بندی خودکار دستگاه ها بر اساس معیارهای از پیش تعریف شده است.
ویژگی ها و عملکردهای گروه Azure AD عبارتند از:
-
بررسی اجمالی: اطلاعات اولیه درباره گروه، از جمله نوع عضویت و شناسه منحصر به فرد.
-
خواص: جزئیات گروه مانند نام، نوع، توضیحات و سایر ویژگی های مرتبط.
-
اعضا: کاربرانی که بخشی از گروه هستند.
-
صاحبان: مدیران با کنترل گروه و تنظیمات آن.
-
واحدهای اداری: ارتباط گروه ها با AU های خاص برای مدیریت کارآمد.
-
عضویت در گروه: گروه بندی سلسله مراتبی گروه ها در سایر گروه های امنیتی.
-
برنامه های کاربردی: تخصیص برنامه ها به گروه ها برای دسترسی جمعی به خدمات.
-
مجوزها: تخصیص مجوزها در سطح گروه برای دسترسی مداوم به ویژگی های دارای مجوز.
-
تکالیف نقش: منابع قابل دسترسی برای اعضای گروه، تعریف مجوزها و امتیازات.
-
قوانین عضویت پویا: قوانین پیکربندی برای به روز رسانی خودکار عضویت در گروه بر اساس معیارها و ویژگی ها.
ایجاد گروه با Terraform
resource "azuread_group" "test" {
display_name = "test"
security_enabled = true
dynamic_membership {
enabled = true
rule = "user.surname -eq \"terraform\""
}
}
درست بودن “display_name” و “security_enabled” یا “mail_enabled” الزامی است و بقیه اختیاری هستند. برای افزودن کاربران به یک گروه بسته به شرایط، از «dynamic_membership» استفاده میکنیم که طبق آن، کاربران را گروهبندی میکند. در اینجا، من کاربرانی را که “نام خانوادگی” آنها برابر با “terraform” است، گروه بندی می کنم و از این رو تنها کاربری را که قبلا ایجاد کرده ایم به این گروه اضافه می کنم.
این همچنین به یک برنامه عالی برای کار کردن نیاز دارد. ما می توانیم به صورت دستی کاربران را به یک گروه در ردیف اصلی اضافه کنیم.
data "azuread_client_config" "current" {}
resource "azuread_group" "test" {
display_name = "test"
security_enabled = true
members = [
azuread_user.test.object_id,
data.azuread_client_config.object_id
]
}
به این ترتیب، میتوانیم کاربران را بهصورت دستی با مشخص کردن «object_id» آنها در لیست اعضا به یک گروه اضافه کنیم. روشی که ما دادههای موجود را از ابر به ترافورم واکشی میکنیم، فقط برای استفاده از برخی جزئیات در جریان خود، از طریق یک بلوک «داده» است، مانند آنچه در خط اول بالا انجام دادیم. در کد بالا، کاربر فعلی را دریافت میکنم که پلن Terraform را اعمال میکند، که کاربر مرتبط با اصل سرویس است که قبلاً برای استفاده با Terraform ایجاد کردیم. و سپس، object_id آن را در لیست اعضا اضافه کردم. بنابراین، این بار، گروه شامل دو کاربر است. یکی کاربر Terraform و دیگری کاربری است که در بالا با کد Terraform ایجاد کردیم.
نتیجه
Azure Active Directory (Azure AD) یک راه حل قوی و جامع برای مدیریت فهرست و هویت در فضای ابری ارائه می دهد. سازمانها با مدیریت مؤثر کاربران، استفاده از واحدهای اداری و استفاده از قدرت گروههای Azure AD، میتوانند مدیریت کاربر را سادهتر کنند، مسئولیتهای اداری را محول کنند و همکاری بین کاربران را افزایش دهند. Azure AD یک راه حل یکپارچه و امن برای مدیریت هویت ارائه می دهد که به کسب و کارها قدرت می دهد تا از فضای ابری استفاده کنند و پتانسیل کامل خود را باز کنند.
اگر این مقاله را مفید و آموزنده می دانید، لطفاً لایک و اشتراک گذاری آن را فراموش نکنید. همچنین، Chiranjeevi Tirunagari را برای مقالات بیشتر دنبال کنید. ارتباط با من را در شبکه های اجتماعی در https://www.linkedin.com/in/vchiranjeeviak/ و https://twitter.com/vchiranjeeviak . متشکرم.