구독 계정별 직접 등록

이 문서에서는 Azure의 개별 구독 계정의 리소스 정보를 조회하기 위한 설정 방법 을 안내합니다.
이 과정을 통해 다음 정보를 얻을 수 있습니다.

  • Subscription ID
  • Tenant ID
  • Client ID
  • Client Secret

1. 앱 등록

ℹ️
앱 등록을 통해 Azure의 Client IDTenant ID 정보를 얻을 수 있습니다.

Azure Portal의 [앱 등록] 페이지로 이동

검색창에 ‘앱 등록’을 검색하여 [앱 등록]을 클릭합니다.

[새 등록] 버튼 클릭

앱 등록 정보 입력

(1) 애플리케이션의 이름을 입력합니다.
(2) [이 조직 디렉터리의 계정만]을 선택합니다.
(3) [선택안내]를 클릭하여 조직의 구조에 적합한 API에 액세스 가능한 계정을 선택할 수 있습니다.
(4) [등록] 버튼을 클릭합니다.

앱 등록 완료

완료 후, [기본 정보] 메뉴에서 Client ID 와 Tenant ID 설정 정보를 확인할 수 있습니다.

2. 리소스 그룹 생성 (선택 사항)

리소스 그룹은 Azure에서 사용하고 있는 리소스를 관리하기 위한 그룹으로, 구독과 1:N 관계 를 맺을 수 있습니다.

Azure Portal의 [리소스 그룹] 페이지로 이동

검색창에 ‘리소스 그룹’을 입력하여 서비스 목록에 있는 [리소스 그룹]을 클릭합니다.

[만들기] 버튼 클릭

프로젝트 정보 입력한 뒤 [검토 + 만들기] 버튼 클릭

3. 역할 부여

역할Azure 리소스에 대한 접근 권한의 모임 입니다.
Azure 플러그인이 리소스 정보를 수집하기 위해서는 적절한 권한을 가진 역할이 필요합니다. 사용자 지정 역할 생성을 통해 필요한 권한을 가진 역할을 생성 할 수 있습니다.

컬렉터 플러그인은 읽기 권한 이외의 어떠한 권한도 필요하지 않습니다. 각 플러그인에서 필요한 권한 정보는 아래와 같습니다.

CloudOps Azure Collector 권한 목록 (JSON)
{
    "properties": {
        "roleName": "cloudops_azure_collector_role",
        "description": "Custom role for CloudOps Azure collector",
        "assignableScopes": [
            "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"
        ],
        "permissions": [
            {
                "actions": [
                    "Microsoft.Network/applicationGateways/read",
                    "Microsoft.Network/applicationGateways/privateEndpointConnections/read",
                    "Microsoft.Network/applicationGateways/privateLinkConfigurations/read",
                    "Microsoft.Network/applicationGateways/privateLinkResources/read",
                    "Microsoft.Network/publicIPAddresses/read",
                    "Microsoft.Network/publicIPAddresses/dnsAliases/read",
                    "Microsoft.Network/publicIPAddresses/providers/Microsoft.Insights/diagnosticSettings/read",
                    "Microsoft.Network/publicIPAddresses/providers/Microsoft.Insights/logDefinitions/read",
                    "Microsoft.Network/publicIPAddresses/providers/Microsoft.Insights/metricDefinitions/read",
                    "Microsoft.DocumentDB/databaseAccounts/services/read",
                    "Microsoft.DocumentDB/databaseAccounts/read",
                    "Microsoft.DocumentDB/databaseAccounts/listKeys/action",
                    "Microsoft.DocumentDB/databaseAccounts/privateLinkResources/read",
                    "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/read",
                    "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/clientEncryptionKeys/read",
                    "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/read",
                    "Microsoft.DocumentDB/databaseAccounts/tables/read",
                    "Microsoft.Resources/subscriptions/read",
                    "Microsoft.Compute/disks/read",
                    "Microsoft.KeyVault/vaults/read",
                    "Microsoft.KeyVault/vaults/keys/read",
                    "Microsoft.KeyVault/vaults/providers/Microsoft.Insights/diagnosticSettings/Read",
                    "Microsoft.KeyVault/vaults/privateEndpointConnections/read",
                    "Microsoft.KeyVault/vaults/privateEndpointConnectionProxies/read",
                    "Microsoft.KeyVault/vaults/secrets/read",
                    "Microsoft.Network/loadBalancers/read",
                    "Microsoft.Network/loadBalancers/backendAddressPools/read",
                    "Microsoft.Network/loadBalancers/backendAddressPools/backendPoolAddresses/read",
                    "Microsoft.Network/loadBalancers/providers/Microsoft.Insights/diagnosticSettings/read",
                    "Microsoft.Network/loadBalancers/frontendIPConfigurations/read",
                    "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancerPools/read",
                    "Microsoft.Network/loadBalancers/inboundNatPools/read",
                    "Microsoft.Network/loadBalancers/inboundNatRules/read",
                    "Microsoft.Network/loadBalancers/loadBalancingRules/read",
                    "Microsoft.Network/loadBalancers/providers/Microsoft.Insights/logDefinitions/read",
                    "Microsoft.Network/loadBalancers/outboundRules/read",
                    "Microsoft.Network/loadBalancers/networkInterfaces/read",
                    "Microsoft.Network/loadBalancers/probes/read",
                    "Microsoft.Network/loadBalancers/virtualMachines/read",
                    "Microsoft.Network/networkInterfaces/loadBalancers/read",
                    "Microsoft.Network/virtualNetworks/subnets/joinLoadBalancer/action",
                    "Microsoft.Network/virtualNetworks/joinLoadBalancer/action",
                    "Microsoft.DBforMySQL/flexibleServers/read",
                    "Microsoft.DBforMySQL/flexibleServers/providers/Microsoft.Insights/diagnosticSettings/read",
                    "Microsoft.DBforMySQL/servers/read",
                    "Microsoft.DBforMySQL/servers/administrators/read",
                    "Microsoft.DBforMySQL/servers/advisors/read",
                    "Microsoft.DBforMySQL/servers/privateEndpointConnectionProxies/read",
                    "Microsoft.DBforMySQL/servers/keys/read",
                    "Microsoft.DBforMySQL/servers/privateEndpointConnections/read",
                    "Microsoft.DBforMySQL/servers/privateLinkResources/read",
                    "Microsoft.DBforMySQL/servers/configurations/read",
                    "Microsoft.DBforMySQL/servers/providers/Microsoft.Insights/diagnosticSettings/read",
                    "Microsoft.DBforMySQL/servers/providers/Microsoft.Insights/metricDefinitions/read",
                    "Microsoft.DBforMySQL/servers/firewallRules/read",
                    "Microsoft.DBforMySQL/servers/databases/read",
                    "Microsoft.DBforMySQL/servers/replicas/read",
                    "Microsoft.DBforMySQL/servers/performanceTiers/read",
                    "Microsoft.DBforMySQL/servers/recoverableServers/read",
                    "Microsoft.DBforMySQL/servers/virtualNetworkRules/read",
                    "Microsoft.Network/natGateways/read",
                    "Microsoft.Network/natGateways/join/action",
                    "microsoft.network/vpnGateways/natRules/read",
                    "microsoft.network/virtualNetworkGateways/natRules/read",
                    "Microsoft.Network/publicIPPrefixes/read",
                    "Microsoft.Network/virtualNetworks/subnets/read",
                    "Microsoft.Network/networkSecurityGroups/read",
                    "Microsoft.Network/networkSecurityGroups/defaultSecurityRules/read",
                    "Microsoft.Network/networksecuritygroups/providers/Microsoft.Insights/diagnosticSettings/read",
                    "Microsoft.Network/networkSecurityGroups/securityRules/read",
                    "Microsoft.Network/networkInterfaces/read",
                    "Microsoft.Network/networkInterfaces/effectiveNetworkSecurityGroups/action",
                    "Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action",
                    "Microsoft.Network/virtualNetworks/subnets/join/action",
                    "Microsoft.DBforPostgreSQL/servers/read",
                    "Microsoft.DBforPostgreSQL/servers/administrators/read",
                    "Microsoft.DBforPostgreSQL/servers/advisors/read",
                    "Microsoft.DBforPostgreSQL/servers/privateEndpointConnectionProxies/read",
                    "Microsoft.DBforPostgreSQL/servers/keys/read",
                    "Microsoft.DBforPostgreSQL/servers/privateEndpointConnections/read",
                    "Microsoft.DBforPostgreSQL/servers/privateLinkResources/read",
                    "Microsoft.DBforPostgreSQL/servers/configurations/read",
                    "Microsoft.DBforPostgreSQL/servers/firewallRules/read",
                    "Microsoft.DBforPostgreSQL/servers/databases/read",
                    "Microsoft.DBforPostgreSQL/servers/replicas/read",
                    "Microsoft.DBforPostgreSQL/servers/recoverableServers/read",
                    "Microsoft.DBforPostgreSQL/servers/securityAlertPolicies/read",
                    "Microsoft.DBforPostgreSQL/servers/virtualNetworkRules/read",
                    "Microsoft.Storage/deletedAccounts/read",
                    "Microsoft.Storage/storageAccounts/read",
                    "Microsoft.Storage/storageAccounts/privateEndpointConnections/read",
                    "Microsoft.Storage/storageAccounts/providers/Microsoft.Insights/diagnosticSettings/read",
                    "Microsoft.Storage/storageAccounts/blobServices/read",
                    "Microsoft.Storage/storageAccounts/blobServices/containers/read",
                    "Microsoft.Storage/storageAccounts/tableServices/providers/Microsoft.Insights/diagnosticSettings/read",
                    "Microsoft.Storage/storageAccounts/privateLinkResources/read",
                    "Microsoft.Storage/storageAccounts/objectReplicationPolicies/read",
                    "Microsoft.Storage/storageAccounts/encryptionScopes/read",
                    "Microsoft.Compute/virtualMachineScaleSets/read",
                    "Microsoft.Compute/virtualMachineScaleSets/networkInterfaces/read",
                    "Microsoft.Compute/virtualMachineScaleSets/publicIPAddresses/read",
                    "Microsoft.Compute/virtualMachineScaleSets/providers/Microsoft.Insights/diagnosticSettings/read",
                    "Microsoft.Compute/virtualMachineScaleSets/extensions/read",
                    "Microsoft.Compute/virtualMachineScaleSets/extensions/roles/read",
                    "Microsoft.Compute/virtualMachineScaleSets/instanceView/read",
                    "Microsoft.Compute/virtualMachineScaleSets/osUpgradeHistory/read",
                    "Microsoft.Compute/virtualMachineScaleSets/skus/read",
                    "Microsoft.Compute/virtualMachineScaleSets/rollingUpgrades/read",
                    "Microsoft.Compute/virtualMachineScaleSets/providers/Microsoft.Insights/metricDefinitions/read",
                    "Microsoft.Compute/virtualMachineScaleSets/vmSizes/read",
                    "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/read",
                    "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/extensions/read",
                    "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/instanceView/read",
                    "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/read",
                    "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/ipConfigurations/read",
                    "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/ipConfigurations/publicIPAddresses/read",
                    "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/runCommands/read",
                    "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/providers/Microsoft.Insights/metricDefinitions/read",
                    "Microsoft.Network/dnsForwardingRulesets/virtualNetworkLinks/read",
                    "Microsoft.Network/loadBalancers/virtualMachines/read",
                    "Microsoft.Network/networkInterfaces/join/action",
                    "Microsoft.Network/privateDnsZones/read",
                    "Microsoft.Network/privateDnsZones/virtualNetworkLinks/read",
                    "Microsoft.Network/locations/virtualNetworkAvailableEndpointServices/read",
                    "Microsoft.Network/virtualNetworks/read",
                    "Microsoft.Network/locations/supportedVirtualMachineSizes/read",
                    "Microsoft.Network/virtualNetworks/bastionHosts/default/action",
                    "Microsoft.Network/virtualNetworks/checkIpAddressAvailability/read",
                    "Microsoft.Network/virtualNetworks/privateDnsZoneLinks/read",
                    "Microsoft.Network/virtualNetworks/usages/read",
                    "Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read",
                    "Microsoft.Network/virtualNetworks/remoteVirtualNetworkPeeringProxies/read",
                    "Microsoft.Network/virtualNetworks/subnets/contextualServiceEndpointPolicies/read",
                    "Microsoft.Network/virtualNetworks/subnets/resourceNavigationLinks/read",
                    "Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/read",
                    "Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/details/read",
                    "Microsoft.Network/virtualNetworks/subnets/virtualMachines/read",
                    "Microsoft.Network/virtualNetworks/virtualMachines/read",
                    "Microsoft.Network/virtualNetworks/customViews/read",
                    "Microsoft.Network/virtualNetworks/providers/Microsoft.Insights/diagnosticSettings/read",
                    "Microsoft.Network/virtualNetworkGateways/read",
                    "Microsoft.Network/virtualNetworkGateways/providers/Microsoft.Insights/diagnosticSettings/read",
                    "microsoft.network/virtualnetworkgateways/connections/read",
                    "Microsoft.Network/connections/read",
                    "Microsoft.Network/virtualNetworkTaps/read",
                    "Microsoft.Network/virtualNetworkTaps/networkInterfaceTapConfigurationProxies/read",
                    "Microsoft.Network/virtualRouters/read",
                    "Microsoft.Network/virtualRouters/providers/Microsoft.Insights/metricDefinitions/read",
                    "Microsoft.Network/virtualRouters/peerings/read",
                    "Microsoft.ContainerInstance/containerGroups/read",
                    "Microsoft.SignalRService/WebPubSub/read",
                    "Microsoft.SignalRService/WebPubSub/hubs/read",
                    "Microsoft.SignalRService/webPubSub/listKeys/action",
                    "Microsoft.Insights/Metrics/Read",
                    "Microsoft.Sql/servers/read",
                    "Microsoft.Sql/servers/administrators/read",
                    "Microsoft.Sql/servers/databases/read",
                    "Microsoft.Sql/servers/automaticTuning/read",
                    "Microsoft.Sql/servers/databases/automaticTuning/read",
                    "Microsoft.Sql/servers/databases/auditingSettings/read",
                    "Microsoft.Sql/servers/auditingSettings/read",
                    "Microsoft.Sql/servers/failoverGroups/read",
                    "Microsoft.Sql/servers/encryptionProtector/read",
                    "Microsoft.Sql/servers/elasticPools/read",
                    "Microsoft.Sql/servers/elasticPools/databases/read",
                    "Microsoft.Sql/servers/restorableDroppedDatabases/read",
                    "Microsoft.Sql/servers/firewallRules/read",
                    "Microsoft.Sql/servers/virtualNetworkRules/read",
                    "Microsoft.Sql/servers/databases/syncGroups/read",
                    "Microsoft.Sql/servers/syncAgents/read",
                    "Microsoft.Sql/servers/databases/dataMaskingPolicies/rules/read",
                    "Microsoft.Sql/servers/databases/replicationLinks/read",
                    "Microsoft.Sql/servers/replicationLinks/read"
                ],
                "notActions": [],
                "dataActions": [],
                "notDataActions": []
            }
        ]
    }
}
ℹ️
Keyvault, CosmosDB, WebPubSub 의 경우 actions 권한이 필요하기 때문에 독자 권한으로 역할 부여 시 오류가 발생할 수 있습니다. 7. 사용자 지정 역할 추가으로 이동하여 역할 부여를 진행해 주세요.

역할을 부여하는 방법은 두 가지가 있습니다.

  • 구독에 역할 부여: 구독 내 모든 자원을 수집하려는 경우 구독에 역할을 부여합니다.
  • 리소스 그룹에 역할 부여: 구독 내 특정 리소스 그룹만 수집하려는 경우 2. 리소스 그룹 생성을 진행한 뒤, 리소스 그룹에 역할을 부여합니다.

3-1. 구독에 역할 부여

Azure Portal의 [구독] 페이지로 이동

검색창에 ‘구독’을 입력하여 서비스 목록에 있는 [구독]을 클릭합니다.

역할을 부여할 구독 선택

[액세스 제어(IAM) > 추가 > 역할 할당 추가] 버튼을 클릭

[독자] 역할을 클릭한 후 [다음] 버튼을 클릭

[구성원 선택] 버튼을 클릭하여 구성원으로 어플리케이션을 선택

구성원 추가 후 [선택] 버튼을 클릭

[검토 + 할당] 버튼이 활성화되면 클릭

3-2. 리소스 그룹에 역할 부여

Azure Portal의 [리소스 그룹] 페이지로 이동

검색창에 ‘리소스 그룹’을 입력하여 서비스 목록에 있는 [리소스 그룹]을 클릭합니다.

권한을 부여할 리소스 그룹 클릭

[액세스 제어(IAM) > 추가 > 역할 할당 추가] 버튼 클릭

[독자] 권한을 선택 후 [다음] 버튼 클릭

[사용자,그룹, 서비스 주체]를 선택 후 [구성원 선택]을 클릭

[선택된 구성원]을 확인하고 [선택] 버튼 클릭

[검토 + 할당] 버튼이 활성화가 되며 해당 버튼 클릭

ℹ️
선택된 구성원은 선택한 리소스 그룹에 대한 접근 권한을 가지고 있어야 합니다.

4. 앱 인증키 생성

인증키는 Azure 리소스에 접근하기 위한 자격 증명 정보를 가지고 있습니다.
인증키 생성을 통해 Client Secret 설정 정보를 얻을 수 있습니다.

Azure Portal의 [앱 등록] 페이지로 이동

검색창에 ‘앱 등록’을 검색하여 [앱 등록]을 클릭합니다.

인증키를 생성할 어플리케이션을 클릭

[인증서 및 암호 > 클라이언트 비밀] 탭을 클릭한 후 [새 클라이언트 암호] 버튼 클릭

클라이언트 암호 정보를 입력한 뒤 [추가] 버튼 클릭

생성된 인증키 정보 메모

페이지를 벗어날 경우 생성된 암호 값을 다시 볼 수 없으므로 메모해 둡니다. [값] 칼럼에 있는 정보는 Client Secret 설정 정보에 해당합니다.

5. Subscription ID(구독 ID) 확인하기

Azure Portal의 [구독] 페이지로 이동

검색창에 ‘구독’을 입력하여 서비스 목록에 있는 [구독]을 클릭합니다.

구독 정보 확인

Subscription ID 에 해당하는 값인 구독 ID 정보를 확인합니다.

6. CloudOps에 서비스 어카운트 등록

[1~5]번 과정을 진행하면서 얻은 정보를 CloudOps 도메인에서 입력합니다.
서비스 어카운트 등록의 자세한 방법은 CloudOps에 Azure 연동하기 항목을 참고하세요.

7. 사용자 지정 역할 추가 (선택 사항)

[구독] 서비스로 이동한 뒤 [액세서 제어(IAM)] 메뉴 선택

(1) [액세서 제어(IAM)] 메뉴를 선택합니다.
(2) [추가] 버튼을 클릭합니다.
(3) [사용자 지정 역할 추가]을 클릭합니다.

기본 정보 입력

사용자 지정 역할 이름에 cloudops_custom_role을 입력합니다.

(1) 기준 권한에서 [처음부터 새로 시작]을 클릭합니다.
(2) 왼족 하단에 [다음] 버튼을 클릭합니다.

권한 추가

[편집] 버튼을 클릭한 뒤, 코드블럭에서 [properties > permissions > actions]에 문서에 적힌 권한들을 추가합니다.

검토 및 저장

[저장] 버튼을 클릭한 뒤, [다음] 버튼을 클릭합니다.

역할 부여

사용자 지정 역할을 생성한 후, 역할 부여 과정을 통해 역할을 부여합니다.

v1.1.0