前提条件

このトピックでは、Oracle Database@Azureのプロビジョニングを開始するために必要な前提条件について説明します。プロビジョニング中は、実行するタスクの多くに特定の権限が必要です。次の表に、各タスクを完了するために必要な権限の詳細を示します。

ノート

次のノートは、OCI IAMに関するものです:
  • ユーザーがOCIテナンシ管理者の場合、次の表に示すステップには追加の権限は必要ありません。
  • ユーザーがOCIテナンシ管理者でない場合、ユーザーは、次の表に示す必要な権限を持つグループの一部である必要があります。
    • オンボーディング・プロセス中に、必要なポリシーを使用して一部のグループが自動的に作成され、ユーザーがタスクを実行できるように、それらのグループにユーザーを追加できます。
    • 別のグループにタスクの実行を許可する場合は、次のステップに従います。
      • デフォルト・ドメインに新規グループを作成するか、既存のグループを使用します。詳細は、グループの作成に関する項を参照してください。
      • 必要なポリシー・ステートメントを使用してOCIテナンシのルート・コンパートメントにポリシーを作成し、それをグループに追加します。詳細については、「保険証券の作成」を参照してください。
      • グループにユーザーを追加します。詳細については、「グループへのユーザーの追加」を参照してください。
ノート

次のノートは、Azure IAMに関するものです:
  • ユーザーに「所有者」という特権管理者ロールがある場合、次の表に示すステップには追加の権限は必要ありません。Contributorロールを持つユーザーは、すべてのリソースを管理できますが、ユーザーはAzure RBACでロールを割り当てることはできません。Azureのユーザー・アクセス管理者ロールは、専用の特権管理者ロールです。これにより、ユーザーはAzureリソースへのユーザー・アクセスを管理できます。
  • ユーザーに適切な特権管理者ロールがない場合、ユーザーには追加の権限およびロールが必要です。
  • 次の表に示すロールおよび権限は、Oracle Database@Azureの適切な権限の割当てに必要なAzure IAMアクションの例を示しています。
  • ロールを作成してユーザーまたはグループに割り当てるには、Azureポータル、Azure PowerShell、Azure CLIまたはREST APIを使用したカスタム・ロールの作成を参照してください。
  • Microsoft Entra IDを使用してユーザー・ロールを管理するには、「Microsoft Entra IDを使用したユーザー・ロールの割当て」および「Microsoft Entraグループを使用したロール割当ての管理」を参照してください。
  • JSONテンプレートを使用してロールを作成する場合は、[Name]をロールの名前に置き換え、[Actions]を付与する権限に置き換える必要があります。
    {
      "Name": "Custom Network Role",
      "Id": null,
      "IsCustom": true,
      "Description": "Can manage VNets and Subnets including delegation",
      "Actions": [
        "Microsoft.Network/virtualNetworks/*",
        "Microsoft.Network/virtualNetworks/subnets/*"
      ],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
        "/subscriptions/{subscription-id}"
      ]
    }
ノート

Azureには定義済の目的で組込みロールがあり、カスタム・ロールは一連の権限で作成できます。Azureではユーザーにロールを直接割り当てることができますが、ユーザーのグループの作成およびグループへのロールの割当てをお薦めします。詳細は、Microsoft Entra RBACのドキュメントを参照してください。

表1-1タスク別のOracle Database@Azureリソース権限

タスク クラウド ペルソナ 権限
  • VNetの作成
  • VNetの変更
  • VNetの削除
  • 委任サブネットの作成
  • 委任サブネットの変更
  • 委任サブネットの削除
Azure ネットワーク管理者

組込みロール: ネットワーク・コントリビュータ

{
  "Name": "Custom VNet & Subnet Admin",
  "IsCustom": true,
  "Description": "Allows read, write, and delete permissions on Azure virtual networks and subnets.",
  "Actions": [
    "Microsoft.Network/virtualNetworks/read",
    "Microsoft.Network/virtualNetworks/write",
    "Microsoft.Network/virtualNetworks/delete",
    "Microsoft.Network/virtualNetworks/subnets/read",
    "Microsoft.Network/virtualNetworks/subnets/write",
    "Microsoft.Network/virtualNetworks/subnets/delete"
  ],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/subscriptions/{subscription-id}"
  ]
}
  • Exadataインフラストラクチャの作成
  • Exadataインフラストラクチャの変更
  • Exadataインフラストラクチャの削除
Azure インフラストラクチャ管理者

組込みロール: Oracle.Database Exadataインフラストラクチャ管理者

{
  "Name": "Oracle.Database Exadata Infrastructure Administrator",
  "IsCustom": true,
  "Description": "Grants full access to manage all Oracle.Database resources",
  "Actions": [
    "Oracle.Database/cloudExadataInfrastructures/*/read",
    "Oracle.Database/cloudExadataInfrastructures/*/write",
    "Oracle.Database/cloudExadataInfrastructures/*/delete",
    "Oracle.Database/cloudVmClusters/*/read",
    "Oracle.Database/cloudVmClusters/*/write",
    "Oracle.Database/cloudVmClusters/*/delete",
    "Oracle.Database/cloudVmClusters/*/action",
    "Oracle.Database/Locations/*/read",
    "Oracle.Database/Locations/*/write",
    "Oracle.Database/Operations/read",
    "Oracle.Database/oracleSubscriptions/*/read",
    "Oracle.Database/oracleSubscriptions/listCloudAccountDetails/action",
    "Oracle.Database/resourceAnchors/*",
    "Oracle.Database/networkAnchors/*",
    "Microsoft.Resources/subscriptions/resourceGroups/read",
    "Microsoft.Network/virtualNetworks/subnets/read",
    "Microsoft.Network/virtualNetworks/subnets/write",
    "Microsoft.Network/virtualNetworks/read",
    "Microsoft.Network/locations/operations/read",
    "Microsoft.Resources/deployments/*",
    "Microsoft.Compute/sshPublicKeys/read",
    "Microsoft.Compute/sshPublicKeys/write",
    "Microsoft.Compute/sshPublicKeys/generateKeyPair/action"
  ],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/subscriptions/{subscription-id}"
  ]
}
  • Exadata VMクラスタの作成
  • Exadata VMクラスタの変更
  • Exadata VMクラスタの削除
Azure インフラストラクチャ管理者およびデータベース管理者

組込みロール: Oracle.Database VmCluster管理者の組込みロール

{
  "Name": "Oracle.Database VmCluster Administrator",
  "IsCustom": true,
  "Description": "Grants full access to manage Exadata VmClusters",
  "Actions": [
    "Oracle.Database/cloudVmClusters/*/read",
    "Oracle.Database/cloudVmClusters/*/write",
    "Oracle.Database/cloudVmClusters/*/delete",
    "Oracle.Database/cloudExadataInfrastructures/write",
    "Oracle.Database/cloudExadataInfrastructures/*/read",
    "Oracle.Database/Locations/*/read",
    "Oracle.Database/Locations/*/write",
    "Oracle.Database/Operations/read",
    "Oracle.Database/oracleSubscriptions/*/read",
    "Oracle.Database/resourceAnchors/*",
    "Oracle.Database/networkAnchors/*",
    "Microsoft.Resources/deployments/*",
    "Microsoft.Resources/subscriptions/resourceGroups/read",
    "Microsoft.Network/virtualNetworks/read",
    "Microsoft.Network/virtualNetworks/subnets/read",
    "Microsoft.Network/virtualNetworks/subnets/write",
    "Microsoft.Network/locations/operations/read",
    "Microsoft.Compute/sshPublicKeys/read",
    "Microsoft.Compute/sshPublicKeys/write",
    "Microsoft.Compute/sshPublicKeys/generateKeyPair/action"
  ],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/subscriptions/{subscription-id}"
  ]
}
  • Exascale VMクラスタの作成
  • Exascale VMクラスタの変更
  • Exascale VMクラスタの削除
Azure インフラストラクチャ管理者およびデータベース管理者

組込みロール: Oracle.Database Exascale VmCluster管理者

{
  "Name": "Oracle.Database Exascale VmCluster Administrator",
  "IsCustom": true,
  "Description": "Grants full access to manage Exascale VmClusters",
  "Actions": [
    "Oracle.Database/exascaleDbStorageVaults/read",
    "Oracle.Database/exadbVmClusters/*/read",
    "Oracle.Database/exadbVmClusters/*/write",
    "Oracle.Database/exadbVmClusters/*/delete",
    "Oracle.Database/exadbVmClusters/*/action",
    "Oracle.Database/Locations/*/read",
    "Oracle.Database/Locations/*/write",
    "Oracle.Database/Operations/read",
    "Oracle.Database/oracleSubscriptions/*/read",
    "Oracle.Database/resourceAnchors/*",
    "Oracle.Database/networkAnchors/*",
    "Microsoft.Resources/subscriptions/resourceGroups/read",
    "Microsoft.Resources/deployments/*",
    "Microsoft.Network/virtualNetworks/read",
    "Microsoft.Network/virtualNetworks/subnets/read",
    "Microsoft.Network/virtualNetworks/subnets/write",
    "Microsoft.Network/locations/operations/read",
    "Microsoft.Compute/sshPublicKeys/read",
    "Microsoft.Compute/sshPublicKeys/write",
    "Microsoft.Compute/sshPublicKeys/generateKeyPair/action"
  ],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/subscriptions/{subscription-id}"
  ]
}
  • Autonomous AI Databaseの作成
  • 自律型AIデータベースの変更
  • 自律型AIデータベースの削除
Azure データベース管理者

組込みロール: Oracle.Database Autonomous Database管理者

[
  {
    "Name": "Oracle.Database Autonomous Database Administrator",
    "IsCustom": true,
    "Description": "Grants full access to manage all ADB-S resources",
    "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",
      "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/*"
    ],
    "NotActions": [],
    "DataActions": [],
    "NotDataActions": [],
    "AssignableScopes": [
      "/subscriptions/{subscription-id}"
    ]
  },
  {
    "Name": "Oracle.Database Autonomous Database Global Administrator",
    "IsCustom": true,
    "Description": "Grants full access to manage all Autonomous Database resources",
    "Actions": [
      "Oracle.Database/autonomousDatabases/*/read",
      "Oracle.Database/autonomousDatabases/*/write",
      "Oracle.Database/autonomousDatabases/*/delete",
      "Oracle.Database/autonomousDatabases/*/action",
      "Oracle.Database/Locations/*/read",
      "Oracle.Database/Locations/*/write",
      "Oracle.Database/Operations/read",
      "Oracle.Database/oracleSubscriptions/*/read",
      "Oracle.Database/oracleSubscriptions/*/action",
      "Oracle.Database/resourceAnchors/*",
      "Oracle.Database/networkAnchors/*",
      "Microsoft.Resources/subscriptions/resourceGroups/read",
      "Microsoft.Resources/deployments/*",
      "Microsoft.Network/virtualNetworks/read",
      "Microsoft.Network/virtualNetworks/subnets/read",
      "Microsoft.Network/virtualNetworks/subnets/write",
      "Microsoft.Network/locations/operations/read"
    ],
    "NotActions": [],
    "DataActions": [],
    "NotDataActions": [],
    "AssignableScopes": [
      "/subscriptions/{subscription-id}"
    ]
  }
]
  • Exadata Database (CDBおよびPDB)の作成
  • Exadata Database (CDBおよびPDB)の変更
  • Exadata Database (CDBおよびPDB)の削除
  • Exascaleデータベースの作成
  • Exascaleデータベースの変更
  • Exascaleデータベースの削除
OCI データベース管理者
OCI IAM: ユーザーがOCIテナンシ管理者でない場合は、次の事前作成済グループの一部である必要があります:
    • odbaa-db-family-administrators
    • odbaa-exa-cdb-administrators
    • odbaa-exa-pdb-administrators
  • 次のポリシー・ステートメントを持つその他のグループ:
    • Allow group odbaa-db-family-administrators to manage database-family in compartment id <MulticloudLink_ocid> where all { request.operation != 'CreateAutonomousContainerDatabase', request.operation != 'CreateAutonomousDatabase', request.operation != 'CreateAutonomousDatabaseBackup', request.operation != 'CreateAutonomousVmCluster', request.operation != 'CreateBackup', request.operation != 'CreateBackupDestination', request.operation != 'CreateCloudAutonomousVmCluster', request.operation != 'CreateCloudExadataInfrastructure', request.operation != 'CreateCloudVmCluster', request.operation != 'CreateDatabase', request.operation != 'CreateDatabaseSoftwareImage', request.operation != 'CreateDbHome', request.operation != 'CreateExadataInfrastructure', request.operation != 'CreateExternalBackupJob', request.operation != 'CreateExternalContainerDatabase', request.operation != 'CreateExternalDatabaseConnector', request.operation != 'CreateExternalPluggableDatabase', request.operation != 'CreatePluggableDatabase', request.operation != 'CreateVmCluster', request.operation != 'CreateVmClusterNetwork' }
    • Allow group odbaa-exa-cdb-administrators to manage db-homes in compartment id <MulticloudLink_ocid> where request.operation != 'CreateDbHome'
    • Allow group odbaa-exa-cdb-administrators to manage databases in compartment id <MulticloudLink_ocid> where request.operation != 'CreateDatabase'
    • Allow group odbaa-exa-cdb-administrators to manage db-backups in compartment id <MulticloudLink_ocid>
    • Allow group odbaa-exa-pdb-administrators to manage
            pluggable-databases in compartment id <MulticloudLink_ocid> where request.operation != 'CreatePluggableDatabase'
  • ベース・データベースの作成
  • ベース・データベースの変更
  • ベース・データベースの削除
Azure データベース管理者
組込みロール: Oracle.Database DBSystems管理者
{
  "id": "/....",
  "type": "Microsoft.Authorization/roleDefinitions",
  "roleType": "CustomRole",
  "roleName": "Oracle.Database DbSystems Administrator",
  "description": "Grants full access to manage DbSystems resources",
  "assignableScopes": ["..."],
  "actions": [
    "Oracle.Database/dbSystems/*/read",
    "Oracle.Database/dbSystems/*/write",
    "Oracle.Database/dbSystems/*/delete",
    "Oracle.Database/Locations/*/read",
    "Oracle.Database/Locations/*/write",
    "Oracle.Database/Operations/read",
    "Oracle.Database/oracleSubscriptions/*/read",
    "Oracle.Database/oracleSubscriptions/*/action",
    "Oracle.Database/resourceAnchors/*",
    "Oracle.Database/networkAnchors/*",
    "Microsoft.Network/virtualNetworks/read",
    "Microsoft.Network/virtualNetworks/subnets/read",
    "Microsoft.Network/virtualNetworks/subnets/write",
    "Microsoft.Network/locations/*/read",
    "Microsoft.Compute/sshPublicKeys/read",
    "Microsoft.Compute/sshPublicKeys/write",
    "Microsoft.Compute/sshPublicKeys/generateKeyPair/action",
    "Microsoft.Resources/subscriptions/resourceGroups/read",
    "Microsoft.Resources/deployments/*"
  ],
  "notActions": [
  ],
  "dataActions": [
  ],
  "notDataActions": [
  ]
}
  • ベース・データベースの作成
  • ベース・データベースの変更
  • ベース・データベースの削除
OCI

データベース管理者

組込みグループ: ユーザーがOCIテナンシ管理者でない場合は、OCI IAMの次のグループの一部である必要があります:
  • odbaa-db-systems-administrators
カスタム・ポリシー:
Allow group odbaa-db-systems-administrators to inspect tag-namespaces in tenancy
Allow group odbaa-db-systems-administrators to use tag-namespaces in tenancy where target.tag-namespace.name = 'Multicloud'
Allow group odbaa-db-systems-administrators to read multicloud-configurations in tenancy
Allow group odbaa-db-systems-administrators to {WORKREQUEST_INSPECT} in compartment id BASE_COMPARTMENT_ID
define tenancy orpServiceProdTenancy as <ORP_SERVICE_TENANCY_OCID>
endorse group odbaa-db-systems-administrators, odbaa-db-family-administrators to use cluster-placement-groups in tenancy orpServiceProdTenancy
define tenancy cpg_service as ODBAA_CPG_SERVICE_TENANCY_ID
endorse group odbaa-db-systems-administrators to use cluster-placement-groups in tenancy cpg_service where all {request.operation in ('LaunchDbSystem')}
Allow group odbaa-db-systems-administrators to use multicloud-network-anchors in compartment id BASE_COMPARTMENT_ID
Allow group odbaa-db-systems-administrators to read multicloud-resource-anchors in compartment id BASE_COMPARTMENT_ID
Allow group odbaa-db-systems-administrators to read odbaa-configurations in tenancy
Allow group odbaa-db-systems-administrators to manage db-systems in compartment id BASE_COMPARTMENT_ID
Allow group odbaa-db-systems-administrators to manage db-nodes in compartment id BASE_COMPARTMENT_ID
Allow group odbaa-db-systems-administrators to manage db-homes in compartment id BASE_COMPARTMENT_ID
Allow group odbaa-db-systems-administrators to manage databases in compartment id BASE_COMPARTMENT_ID
Allow group odbaa-db-systems-administrators to manage db-backups in compartment id BASE_COMPARTMENT_ID
Allow group odbaa-db-systems-administrators to manage pluggable-databases in compartment id BASE_COMPARTMENT_ID
Allow group odbaa-db-systems-administrators to { MULTICLOUDLINK_READ, MULTICLOUD_NETWORK_LINK_READ } in compartment id BASE_COMPARTMENT_ID
2025年9月15日より前にプロビジョニングされた既存のOracle Database@Azureテナンシにベース・データベースを作成する場合は、OCIテナンシに次の2つのポリシーを追加します。
  • define tenancy orpServiceProdTenancy as <ORP_SERVICE_TENANCY_OCID>
  • endorse group odbaa-db-systems-administrators, odbaa-db-family-administrators to use cluster-placement-groups in tenancy orpServiceProdTenancy
  • GoldenGateデプロイメントの作成
  • GoldenGateデプロイメントの変更
  • GoldenGateデプロイメントの削除
OCI

インフラストラクチャ管理者およびデータベース管理者

組込みグループ: ユーザーがOCIテナンシ管理者でない場合は、OCI IAMの次のグループの一部である必要があります:
  • odbaa-goldengate-administrators
2025年10月7日より後にプロビジョニングされた既存のOracle Database@AzureテナンシにGoldenGateを作成している場合、事前作成ロールが自動的に作成されます。既存のOCIテナンシの場合、グループを明示的に作成する必要があります。ステップは次のとおりです。
  • グループodbaa-goldengate-administratorsを作成し、そのOCIDをコピーします。
  • MulticloudLink_ODBAA_202xxxxxxxxxというタイトルのコンパートメントの名前をコピーします。
  • ポリシーMulticloudLink_ODBAA_GoldenGate_System_Policyを作成し、次のポリシー・ステートメントを追加します:
    • (GOLDENGATE_GROUP_OCID_GOES_HEREおよびBASE_COMPARTMENT_GOES_HERE値を置き換えます)
カスタム・ポリシー:
Define group odbaa-goldengate-administrators as GOLDENGATE_GROUP_OCID_GOES_HERE
Define tenancy orp_service_prod as ocid1.tenancy.oc1..aaaaaaaayjet4no5xjbjbvedmylzosti4ifmyrqatm6li77t3lpzmufqeagq
Endorse group odbaa-goldengate-administrators to use cluster-placement-groups in tenancy orp_service_prod
Allow group odbaa-goldengate-administrators to use organizations-assigned-subscription in tenancy WHERE ALL {target.subscription.serviceName = 'ORACLEDBATAZURE'}
Allow group odbaa-goldengate-administrators to read organizations-assigned-subscription in tenancy
Allow group odbaa-goldengate-administrators to read limits in tenancy
Allow group odbaa-goldengate-administrators to { MULTICLOUD_CONFIGURATION_READ } in tenancy
Allow group odbaa-goldengate-administrators to { ORGANIZATIONS_SUBSCRIPTION_READ, ORGANIZATIONS_SUBSCRIPTION_INSPECT } in tenancy
Allow group odbaa-goldengate-administrators to manage goldengate-family in compartment BASE_COMPARTMENT_GOES_HERE
Allow group odbaa-goldengate-administrators to manage virtual-network-family in compartment BASE_COMPARTMENT_GOES_HERE
Allow group odbaa-goldengate-administrators to { COMPARTMENT_INSPECT } in compartment BASE_COMPARTMENT_GOES_HERE
Allow group odbaa-goldengate-administrators to { MULTICLOUD_CONFIGURATION_INSPECT } in compartment BASE_COMPARTMENT_GOES_HERE
Allow group odbaa-goldengate-administrators to { MULTICLOUD_RESOURCE_ANCHOR_INSPECT, MULTICLOUD_RESOURCE_ANCHOR_READ } in compartment BASE_COMPARTMENT_GOES_HERE
Allow group odbaa-goldengate-administrators to { MULTICLOUD_NETWORK_ANCHOR_INSPECT, MULTICLOUD_NETWORK_ANCHOR_READ, ODBAA_NETWORK_ANCHOR_INSPECT, ODBAA_NETWORK_ANCHOR_UPDATE } in compartment BASE_COMPARTMENT_GOES_HERE
Allow group odbaa-goldengate-administrators to { MULTICLOUDLINK_INSPECT, MULTICLOUDLINK_READ } in compartment BASE_COMPARTMENT_GOES_HERE
Allow group odbaa-goldengate-administrators to { MULTICLOUD_NETWORK_LINK_INSPECT, MULTICLOUD_NETWORK_LINK_READ } in compartment BASE_COMPARTMENT_GOES_HERE
Allow group odbaa-goldengate-administrators to { MULTICLOUD_NETWORK_LINK_ATTACHMENT_INSPECT, MULTICLOUD_NETWORK_LINK_ATTACHMENT_READ, MULTICLOUD_NETWORK_LINK_ATTACHMENT_CREATE, MULTICLOUD_NETWORK_LINK_ATTACHMENT_UPDATE } in compartment BASE_COMPARTMENT_GOES_HERE
Allow service goldengate to manage tagnamespace in compartment BASE_COMPARTMENT_GOES_HERE
自動化:
  • Cloud Shellを開き、次のスクリプトをOCI管理者としてコピーします。このスクリプトは、必要なIAMポリシーとともにロールodbaa-goldengate-administratorsの作成を自動化します。
    #!/bin/bash
    #
    # Usage:
    # ./goldengate_iam_cloud_shell.sh
    #
    # Example:
    # ./goldengate_iam_cloud_shell.sh
    #
    
    # Enable strict mode to exit on any error.
    set -euo pipefail
    
    # input OCI profile name, default is DEFAULT
    
    function get_home_region_name() {
        local OCI_TENANCY=$1
    
        local cli_output=$(oci iam tenancy get --tenancy-id ${OCI_TENANCY} | jq -r '.data."home-region-key"')
    
        local VAR_HOME_REGION_KEY=${cli_output}
    
        cli_output=$(oci iam region list --all | jq -r --arg VAR_HOME_REGION_KEY ${VAR_HOME_REGION_KEY} '.data[] | select(.key == $VAR_HOME_REGION_KEY) | .name')
    
        echo $cli_output
    }
    
    function get_iam_compartment_name() {
        local OCI_TENANCY=$1
    
        local cli_output=$(oci iam compartment list --compartment-id ${OCI_TENANCY} --all | jq -r '[.data[] | select(.name | startswith("MulticloudLink_ODBAA_"))] | sort_by(.name) | reverse | .[0].name')
    
        echo ${cli_output}
    }
    
    function get_iam_group_info_by_name() {
        local OCI_TENANCY=$1
        local VAR_GROUP_NAME=$2
    
        local cli_output=$(oci iam group list --compartment-id ${OCI_TENANCY} --all | jq -r --arg VAR_GROUP_NAME ${VAR_GROUP_NAME} '.data[] | select(.name == $VAR_GROUP_NAME) | {name: .name, id: .id}')
    
        echo ${cli_output}
    }
    
    function create_iam_group() {
        local VAR_OCI_HOME_REGION=$1
        local OCI_TENANCY=$2
        local VAR_IAM_GROUP_NAME=$3
        local VAR_IAM_GROUP_DESCRIPTION=$4
    
        # Create the policy
        local cli_output=$(oci iam group create --region ${VAR_OCI_HOME_REGION} --compartment-id ${OCI_TENANCY} --name ${VAR_IAM_GROUP_NAME} --description ${VAR_IAM_GROUP_DESCRIPTION} | jq -r '.data | {name: .name, id: .id}')
        
        echo ${cli_output}
    }
    
    function check_if_goldengateDB_policy_exist() {
        local OCI_TENANCY=$1
        local VAR_POLICY_NAME=$2
    
        echo "Checking whether POLICY $VAR_POLICY_NAME exists in $OCI_TENANCY..."
        
        local VAR_FOUND_POLICY_NAME=$(oci iam policy list --compartment-id ${OCI_TENANCY} --all | jq -r --arg VAR_POLICY_NAME ${VAR_POLICY_NAME} '.data[] | select(.name == $VAR_POLICY_NAME) | .name')
    
        if [ "$VAR_FOUND_POLICY_NAME" == "$VAR_POLICY_NAME" ]; then
            return 0
        fi
    
        return -1
    }
    
    function create_goldengate_policy() {
        local VAR_OCI_HOME_REGION=$1
        local OCI_TENANCY=$2
        local VAR_MULTICLOUDLINK_ODBAA_COMPARTMENT=$3
        local VAR_ODBAA_GOLDENGATE_ADMINISTRATORS_GROUP_OCID=$4
    
        local VAR_ORP_SERVICE_PROD_OCID="ocid1.tenancy.oc1..aaaaaaaayjet4no5xjbjbvedmylzosti4ifmyrqatm6li77t3lpzmufqeagq"
        local VAR_POLICY_NAME="MulticloudLink_ODBAA_GoldenGate_System_Policy"
        local VAR_POLICY_DESCRIPTION="Policies to grant execution rights for all operations on GoldenGate resources"
    
        if check_if_goldengateDB_policy_exist $OCI_TENANCY $VAR_POLICY_NAME; then
            echo "INFO: Policy with name $VAR_POLICY_NAME already exist, skipped creation"
            return 0
        fi
    
        echo ""
        echo "Creating policy ${VAR_POLICY_NAME} for: "
        echo "    Tenancy OCID:                               ${OCI_TENANCY}"
        echo "    MulticloudLink_ODBAA_YYYYMMDD compartment:  ${VAR_MULTICLOUDLINK_ODBAA_COMPARTMENT}"
        echo "    odbaa-goldengate-administrators group OCID: ${VAR_ODBAA_GOLDENGATE_ADMINISTRATORS_GROUP_OCID}"
        echo ""
    
        local VAR_ORACLEDBATAZURE="'ORACLEDBATAZURE'"
        local VAR_POLICY_STATEMENTS='[
        "Define group odbaa-goldengate-administrators as {VAR_ODBAA_GOLDENGATE_ADMINISTRATORS_GROUP_OCID}",
        "Define tenancy orp_service_prod as {VAR_ORP_SERVICE_PROD_OCID}",
        "Endorse group odbaa-goldengate-administrators to use cluster-placement-groups in tenancy orp_service_prod",
    
        "Allow group odbaa-goldengate-administrators to use organizations-assigned-subscription in tenancy WHERE ALL {target.subscription.serviceName = {VAR_ORACLEDBATAZURE}}",
        "Allow group odbaa-goldengate-administrators to read organizations-assigned-subscription in tenancy",
        "Allow group odbaa-goldengate-administrators to read limits in tenancy",
        "Allow group odbaa-goldengate-administrators to { MULTICLOUD_CONFIGURATION_READ } in tenancy",
        "Allow group odbaa-goldengate-administrators to { ORGANIZATIONS_SUBSCRIPTION_READ, ORGANIZATIONS_SUBSCRIPTION_INSPECT } in tenancy",
    
        "Allow group odbaa-goldengate-administrators to manage goldengate-family in compartment {VAR_MULTICLOUDLINK_ODBAA_COMPARTMENT}",
    
        "Allow group odbaa-goldengate-administrators to manage virtual-network-family in compartment {VAR_MULTICLOUDLINK_ODBAA_COMPARTMENT}",
        "Allow group odbaa-goldengate-administrators to { COMPARTMENT_INSPECT } in compartment {VAR_MULTICLOUDLINK_ODBAA_COMPARTMENT}",
        "Allow group odbaa-goldengate-administrators to { MULTICLOUD_CONFIGURATION_INSPECT } in compartment {VAR_MULTICLOUDLINK_ODBAA_COMPARTMENT}",
    
        "Allow group odbaa-goldengate-administrators to { MULTICLOUD_RESOURCE_ANCHOR_INSPECT, MULTICLOUD_RESOURCE_ANCHOR_READ } in compartment {VAR_MULTICLOUDLINK_ODBAA_COMPARTMENT}",
        "Allow group odbaa-goldengate-administrators to { MULTICLOUD_NETWORK_ANCHOR_INSPECT, MULTICLOUD_NETWORK_ANCHOR_READ, ODBAA_NETWORK_ANCHOR_INSPECT, ODBAA_NETWORK_ANCHOR_UPDATE } in compartment {VAR_MULTICLOUDLINK_ODBAA_COMPARTMENT}",
        "Allow group odbaa-goldengate-administrators to { MULTICLOUDLINK_INSPECT, MULTICLOUDLINK_READ } in compartment {VAR_MULTICLOUDLINK_ODBAA_COMPARTMENT}",
        "Allow group odbaa-goldengate-administrators to { MULTICLOUD_NETWORK_LINK_INSPECT, MULTICLOUD_NETWORK_LINK_READ } in compartment {VAR_MULTICLOUDLINK_ODBAA_COMPARTMENT}",
        "Allow group odbaa-goldengate-administrators to { MULTICLOUD_NETWORK_LINK_ATTACHMENT_INSPECT, MULTICLOUD_NETWORK_LINK_ATTACHMENT_READ, MULTICLOUD_NETWORK_LINK_ATTACHMENT_CREATE, MULTICLOUD_NETWORK_LINK_ATTACHMENT_UPDATE } in compartment {VAR_MULTICLOUDLINK_ODBAA_COMPARTMENT}",
        "Allow group odbaa-goldengate-administrators to read autonomous-database-family in compartment {VAR_MULTICLOUDLINK_ODBAA_COMPARTMENT}",
        "Allow service goldengate to manage tagnamespace in compartment {VAR_MULTICLOUDLINK_ODBAA_COMPARTMENT}"
        ]'
    
        VAR_POLICY_STATEMENTS=$(
          echo "${VAR_POLICY_STATEMENTS}" | \
          sed "s/{VAR_ODBAA_GOLDENGATE_ADMINISTRATORS_GROUP_OCID}/${VAR_ODBAA_GOLDENGATE_ADMINISTRATORS_GROUP_OCID}/" | \
          sed "s/{VAR_ORP_SERVICE_PROD_OCID}/${VAR_ORP_SERVICE_PROD_OCID}/" | \
          sed "s/{VAR_MULTICLOUDLINK_ODBAA_COMPARTMENT}/${VAR_MULTICLOUDLINK_ODBAA_COMPARTMENT}/" | \
          sed "s/{VAR_ORACLEDBATAZURE}/${VAR_ORACLEDBATAZURE}/"
        )
    
        echo "Rendering policy: $VAR_POLICY_STATEMENTS"
    
        # Create the policy
        local cli_output=$(oci iam policy create \
          --region ${VAR_OCI_HOME_REGION} \
          --compartment-id ${OCI_TENANCY} \
          --name ${VAR_POLICY_NAME} \
          --description "${VAR_POLICY_DESCRIPTION}" \
          --statements "${VAR_POLICY_STATEMENTS}" \
        | jq -r '.data | {name: .name, id: .id}')
        
        echo "Policy created: ${cli_output}"
    }
    
    function main() {
        echo "Started"
    
        local VAR_OCI_HOME_REGION=$(get_home_region_name $OCI_TENANCY)
    
        echo "Home region: $VAR_OCI_HOME_REGION"
    
        # check if multicloud linked compartment exists
        local VAR_FOUND_COMPARTMENT_NAME=$(get_iam_compartment_name $OCI_TENANCY)
        if [[ "$VAR_FOUND_COMPARTMENT_NAME" == "MulticloudLink_ODBAA_"* ]]; then
            echo "Found compartment with name $VAR_FOUND_COMPARTMENT_NAME"
        else
            echo "Compartment with name matching MulticloudLink_ODBAA_* can't be found. Check if cloud linking succeeded"
            return -1
        fi
        VAR_MULTICLOUDLINK_ODBAA_COMPARTMENT=$VAR_FOUND_COMPARTMENT_NAME
        
        # check if group exists
        local VAR_ODBAA_GOLDENGATE_ADMINISTRATORS_GROUP_NAME="odbaa-goldengate-administrators"
        local VAR_ODBAA_GOLDENGATE_ADMINISTRATORS_GROUP_DESC="Oracle GoldenGate Systems Administrators"
    
        local VAR_FOUND_GROUP_INFO=$(get_iam_group_info_by_name $OCI_TENANCY $VAR_ODBAA_GOLDENGATE_ADMINISTRATORS_GROUP_NAME)
    
        if [ "$(echo ${VAR_FOUND_GROUP_INFO} | jq -r '.name')" == "$VAR_ODBAA_GOLDENGATE_ADMINISTRATORS_GROUP_NAME" ]; then
            # skip creation
            echo "Found group info $VAR_FOUND_GROUP_INFO, skipped creation"
        else
            echo "Creating IAM group ${VAR_ODBAA_GOLDENGATE_ADMINISTRATORS_GROUP_NAME} in tenancy: ${OCI_TENANCY}"
            # group does not exist so create new
            local VAR_CREATED_GROUP_INFO=$(create_iam_group $VAR_OCI_HOME_REGION $OCI_TENANCY $VAR_ODBAA_GOLDENGATE_ADMINISTRATORS_GROUP_NAME $VAR_ODBAA_GOLDENGATE_ADMINISTRATORS_GROUP_DESC)
            if [ "$(echo ${VAR_CREATED_GROUP_INFO} | jq -r '.name')" == "$VAR_ODBAA_GOLDENGATE_ADMINISTRATORS_GROUP_NAME" ]; then
              echo "Group created $VAR_CREATED_GROUP_INFO"
              VAR_FOUND_GROUP_INFO=$VAR_CREATED_GROUP_INFO
            else
              echo "Can't create group $VAR_ODBAA_GOLDENGATE_ADMINISTRATORS_GROUP_NAME. Check permissions."
              return -1
            fi
        fi
    
        local VAR_ODBAA_GOLDENGATE_ADMINISTRATORS_GROUP_OCID=$(echo ${VAR_FOUND_GROUP_INFO} | jq -r '.id')
    
        create_goldengate_policy $VAR_OCI_HOME_REGION $OCI_TENANCY $VAR_MULTICLOUDLINK_ODBAA_COMPARTMENT $VAR_ODBAA_GOLDENGATE_ADMINISTRATORS_GROUP_OCID
    
        echo "DONE!"
    }
    main
    
  • GoldenGateデプロイメントまたは接続UIを使用してボールトにシークレットを作成できるようにするには、ユーザーが次の権限を持つグループの一部である必要があります:
    allow group odbaa-goldengate-administrators to manage secret-family in compartment BASE_COMPARTMENT_GOES_HERE
    allow group odbaa-goldengate-administrators to manage vaults in compartment BASE_COMPARTMENT_GOES_HERE
    allow group odbaa-goldengate-administrators to manage keys in compartment BASE_COMPARTMENT_GOES_HERE
  • 動的グループを作成して、定義されたルールに基づいてリソースに権限を付与し、GoldenGateデプロイメントまたはパイプライン(あるいはその両方)がテナンシ内のリソースにアクセスできるようにします。動的グループは必要な数だけ作成できます。たとえば、様々なコンパートメントまたはテナンシにわたるデプロイメントの権限を制御できます。
    name: goldengate-deployments
    Matching rule: ALL {resource.type = 'goldengatedeployment', resource.compartment.id = '<location>'}
  • シークレットを使用するには、次のポリシーをこのグループに追加します。
    allow dynamic-group goldengate-deployments to use keys in tenancy
    allow dynamic-group goldengate-deployments to use vaults in tenancy
    allow dynamic-group goldengate-deployments to read secret-bundles in tenancy
Vaultの設定 OCI

インフラストラクチャ管理者およびデータベース管理者

最初にVaultを設定していることを確認します。Vaultサービスの詳細

必要な権限の付与方法の詳細は、次を参照してください。