modules/azure-identity/main.tf (69 lines of code) (raw):
terraform {
required_providers {
azuread = {
source = "hashicorp/azuread"
}
azurerm = {
source = "hashicorp/azurerm"
}
}
}
locals {
odbaa_adbs_db_administrator_group = "${var.group_prefix}odbaa-adbs-db-administrators-group"
odbaa_exa_infra_administrator_group = "${var.group_prefix}odbaa-exa-infra-administrator"
odbaa_vm_cluster_administrator_group = "${var.group_prefix}odbaa-vm-cluster-administrator"
odbaa_db_family_administrators_group = "${var.group_prefix}odbaa-db-family-administrators"
odbaa_db_family_readers_group = "${var.group_prefix}odbaa-db-family-readers"
odbaa_exa_cdb_administrators_group = "${var.group_prefix}odbaa-exa-cdb-administrators"
odbaa_exa_pdb_administrators_group = "${var.group_prefix}odbaa-exa-pdb-administrators"
odbaa_costmgmt_administrators_group = "${var.group_prefix}odbaa-costmgmt-administrators"
odbaa_network_administrators_group = "${var.group_prefix}odbaa-network-administrators"
# odbaa_other_group includes groups doesn't need build in Azure role assigned.
odbaa_other_groups = toset(compact(["${local.odbaa_costmgmt_administrators_group}", "${local.odbaa_network_administrators_group}", "${local.odbaa_exa_cdb_administrators_group}", "${local.odbaa_exa_pdb_administrators_group}"]))
group_to_role_mapping = tomap({
"${local.odbaa_adbs_db_administrator_group}" = var.adbs_rbac ? "${one(azurerm_role_definition.odbaa-adbs-db-administrators-role).name}" : ""
"${local.odbaa_exa_infra_administrator_group}" = "Oracle.Database Exadata Infrastructure Administrator Built-in Role"
"${local.odbaa_vm_cluster_administrator_group}" = "Oracle.Database VmCluster Administrator Built-in Role"
"${local.odbaa_db_family_administrators_group}" = "Oracle.Database Owner Built-in Role"
"${local.odbaa_db_family_readers_group}" = "Oracle.Database Reader Built-in Role"
})
odbaa_adbs_groups = var.adbs_rbac ? compact(["${local.odbaa_db_family_administrators_group}", "${local.odbaa_db_family_readers_group}", "${local.odbaa_adbs_db_administrator_group}"]) : []
odbaa_exa_groups = var.exa_rbac ? compact(["${local.odbaa_db_family_administrators_group}", "${local.odbaa_db_family_readers_group}", "${local.odbaa_exa_infra_administrator_group}", "${local.odbaa_vm_cluster_administrator_group}"]) : []
}
data "azurerm_subscription" "primary" {
}
resource "azurerm_role_definition" "odbaa-adbs-db-administrators-role" {
count = var.adbs_rbac ? 1 : 0
name = "Oracle.Database Autonomous Database Administrator"
scope = data.azurerm_subscription.primary.id
description = "Grants full access to manage all ADB-S resources"
permissions {
actions = [
"Oracle.Database/autonomousDatabases/*/read",
"Oracle.Database/autonomousDatabases/*/write",
"Oracle.Database/autonomousDatabases/*/delete",
"Oracle.Database/Locations/*/read",
"Oracle.Database/Locations/*/write",
"Oracle.Database/Operations/read",
"Oracle.Database/oracleSubscriptions/*/read",
"Oracle.Database/oracleSubscriptions/*/action",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/subnets/write",
"Microsoft.Network/locations/*/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/deployments/*"
]
data_actions = []
not_actions = []
not_data_actions = []
}
assignable_scopes = [
data.azurerm_subscription.primary.id,
]
}
module "azure_rbac_setup" {
source = "./azure-rbac"
odbaa_built_in_role_assigned_groups = toset(concat(local.odbaa_adbs_groups, local.odbaa_exa_groups))
odbaa_other_groups = local.odbaa_other_groups
role_mapping = local.group_to_role_mapping
}