Terraform 0.11 - IAM policy for service account

सेवा खाते के लिए IAM नीति




terraform

सेवा खाते के लिए IAM नीति

IAM भूमिकाओं का प्रबंधन करते समय, आप एक सेवा खाते को एक संसाधन या एक पहचान के रूप में मान सकते हैं। यह संसाधन iam नीति बाइंडिंग को सेवा खाता संसाधन में जोड़ने के लिए है जो सेवा खाते को संपादित कर सकता है। सेवा खाते के लिए अनुमतियों को कॉन्फ़िगर करने के लिए एक पहचान के रूप में कार्य करने के लिए जो अन्य GCP संसाधनों का प्रबंधन कर सकता है, संसाधनों के google_project_iam सेट का उपयोग करें।

तीन अलग-अलग संसाधन आपको एक सेवा खाते के लिए अपनी IAM नीति का प्रबंधन करने में मदद करते हैं। इन संसाधनों में से प्रत्येक एक अलग उपयोग के मामले में कार्य करता है:

  • google_service_account_iam_policy : आधिकारिक। सेवा खाते के लिए IAM नीति सेट करता है और पहले से संलग्न किसी भी मौजूदा नीति को प्रतिस्थापित करता है।
  • google_service_account_iam_binding : किसी दी गई भूमिका के लिए आधिकारिक। सदस्यों की सूची में भूमिका प्रदान करने के लिए IAM नीति को अद्यतन करता है। सेवा खाते के लिए IAM नीति के भीतर अन्य भूमिकाएं संरक्षित हैं।
  • google_service_account_iam_member : गैर-आधिकारिक। नए सदस्य को भूमिका देने के लिए IAM नीति को अद्यतन करता है। सेवा खाते के लिए भूमिका के लिए अन्य सदस्य संरक्षित हैं।

google_service_account_iam_policy

data "google_iam_policy" "admin" {
  binding {
    role = "roles/editor"

    members = [
      "user:[email protected]",
    ]
  }
}

resource "google_service_account_iam_policy" "admin-account-iam" {
    service_account_id = "your-service-account-id"
    policy_data = "${data.google_iam_policy.admin.policy_data}"
}

google_service_account_iam_binding

resource "google_service_account_iam_binding" "admin-account-iam" {
  service_account_id = "your-service-account-id"
  role        = "roles/editor"

  members = [
    "user:[email protected]",
  ]
}

google_service_account_iam_member

resource "google_service_account_iam_member" "admin-account-iam" {
  service_account_id = "your-service-account-id"
  role        = "roles/editor"
  member      = "user:[email protected]"
}

तर्क संदर्भ

निम्नलिखित तर्क समर्थित हैं:

  • service_account_id - (आवश्यक) पॉलिसी को लागू करने के लिए सेवा खाता आईडी।

  • member/members - (आवश्यक) पहचान जिन्हें role में विशेषाधिकार प्रदान किया जाएगा। प्रत्येक प्रविष्टि में निम्न मान हो सकते हैं:

    • allUsers : एक विशेष पहचानकर्ता जो इंटरनेट पर मौजूद किसी भी व्यक्ति का प्रतिनिधित्व करता है; Google खाते के साथ या उसके बिना।
    • allAuthenticatedUsers : एक विशेष पहचानकर्ता जो किसी ऐसे व्यक्ति का प्रतिनिधित्व करता है जो Google खाते या सेवा खाते से प्रमाणित होता है।
    • उपयोगकर्ता: {emailid} : एक ईमेल पता जो एक विशिष्ट Google खाते का प्रतिनिधित्व करता है। उदाहरण के लिए, [email protected] या [email protected]
    • serviceAccount: {emailid} : एक ईमेल पता जो एक सेवा खाते का प्रतिनिधित्व करता है। उदाहरण के लिए, [email protected]
    • समूह: {emailid} : एक ईमेल पता जो एक Google समूह का प्रतिनिधित्व करता है। उदाहरण के लिए, [email protected]
    • डोमेन: {domain} : एक Google Apps डोमेन नाम जो उस डोमेन के सभी उपयोगकर्ताओं का प्रतिनिधित्व करता है। उदाहरण के लिए, google.com या example.com।
  • role - (आवश्यक) वह भूमिका जिसे लागू किया जाना चाहिए। प्रति भूमिका केवल एक google_service_account_iam_binding का उपयोग किया जा सकता है। ध्यान दें कि कस्टम भूमिकाएँ प्रारूप [projects|organizations]/{parent-name}/roles/{role-name} की होनी चाहिए।

  • policy_data - (केवल google_service_account_iam_policy द्वारा आवश्यक) नीति डेटा जो google_iam_policy डेटा स्रोत द्वारा जनरेट किया गया है।

संदर्भ संदर्भित करता है

ऊपर सूचीबद्ध तर्कों के अलावा, निम्नलिखित गणना की गई विशेषताएँ निर्यात की जाती हैं:

  • etag - (गणना) सेवा खाता IAM नीति का etag।

आयात

सेवा खाता IAM संसाधन परियोजना, सेवा खाता ईमेल, भूमिका और सदस्य का उपयोग करके आयात किया जा सकता है।

$ terraform import google_service_account_iam_policy.admin-account-iam projects/{your-project-id}/serviceAccounts/{your-service-account-email}

$ terraform import google_service_account_iam_binding.admin-account-iam "projects/{your-project-id}/serviceAccounts/{your-service-account-email} roles/editor"

$ terraform import google_service_account_iam_member.admin-account-iam "projects/{your-project-id}/serviceAccounts/{your-service-account-email} roles/editor [email protected]"