Knowledge Base
Cloudockit JSON File Format Description
The purpose of this document is to explain the Cloudockit Format.
This format is returned by Cloudockit in a standardized way between all Cloud Providers.
It includes, all the objects scanned by Cloudockit, all the links, types & metadata related to those objects.
It is composed of the following three main sections:
- Properties: contains the generic properties like Shema Version and the filters used during the document generation
- Objects: contains the list of all objects discovered by Cloudockit during the scanning process
- Metadata: contains all the structure and metadata around Objects. Typically, this include the object Types, Platform, Compliance Rules…
Properties Section
This section contains the generic properties like Schema Version and the filters used during the document generation. The list of properties contained in this section is as follow:
SchemaVersion | Version of the current schema |
GeneratorAssemblyVersion | Version of Cloudockit Generator used to generate the file |
GenerationDateUTC | Date of Generation of the file |
Objects Section
This section contains the list of all objects discovered by Cloudockit during the scanning process.
Each object has the following properties:
Id | Unique Identifier of the object. This will be stable from one generation to another. This is typically extracted from the Cloud environment or auto generated by Cloudockit if it does not exist. |
Name | Displayed Name of the object |
Uri | Resource Identifier that comes from the Cloud Provider (Resource Uri in Azure, Arn in AWS and SelfLink in GCP) |
EnvironmentID | This is the Azure Subscription ID or AWS Account ID or GCP Project ID. |
EnvironmentName | This is the Azure Subscription Name or AWS Account Alias or GCP Project Name.
This is de-Normalized value for ease-of-access as this could be retrieved using the ID and the Metadata section of the document. |
TypeID | Type of the object. It refers to the Types section of the Metadata. For example, this is the ID of the type Azure Virtual Machine. |
TypeName | Type Name of the object. It refers to the Types section of the Metadata.
This is de-Normalized value for ease-of-access as this could be retrieved using the ID and the Metadata section of the document. |
AttachedDocuments | List of documents generated for this specific object.
It includes (can change depending on the settings):
Example: { "AttachedDocuments": [ { "extension": "vsdx", "name": "thediagram.vsdx", "displayName": "Diagram", "url": "sotrage.azure.com/123/thediagram.vsdx", "content": null }, { "extension": "docx", "name": "thedoc.docx", "displayName": "Documentation", "url": "sotrage.azure.com/123/thedoc.docx", "content": null }, { "extension": "html", "name": "webpage.html", "displayName": "Web Page", "url": null, "content": "<body>the vm 789 ...</body>" } ] } |
Properties | These are all the properties of the object.
Properties are basically key/value pairs with the name of the property (internal name, not display name) and the value. The actual display name of the property can be retrieved from the Metadata Section of the json file in the Types list. Property value can also be arrays. Example: { "Properties": { "Id": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/myfirstVM", "Name": "MyFirstVM", "AvailabilitySetName": "The availability set", "MaxDataDiskCount": "5", "NetworkInterfaces": [ { "Id": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/nic1", "Name": "Nic1", "PrivateIP": "10.10.0.2", "PublicIP": "11.10.0.2" }, { "Id": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/nic2", "Name": "Nic2", "PrivateIP": "20.10.0.2", "PublicIP": "21.10.0.2" } ] } } |
Links | Array of links found for the object.
Each link contains the following properties:
Here is an example of Links collection: { "Links": [ { "sourceID": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/myfirstVM", "targetID": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/theVNET/theSubnet", "typeID": "Connection" }, { "sourceID": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1", "targetID": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/myfirstVM", "typeID": "Aggregation" }, { "sourceID": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1", "targetID": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/myfirstVM", "typeID": "Aggregation" } ] } |
ComplianceRules | List of Compliance Rules IDs that are found for the object.
Refer to the metadata Section of the document to get all the details about the Rules from the ID. Example: { "ComplianceRules": [ "CDK_AppServices_NotHttpsMandary" ] } |
RawDataForInternalUseOnly | Internal Use Only. Do not use that. |
Metadata
This section contains all the structure and metadata around Objects. Typically, this include the object Types, Platform, Compliance Rules…
It is split in the following sub-section:
- Categories (Categories_TBM, Categories_CDK): List of all Categories that are used to classify types
- Types: List of all Types of Object (with inheritance between the objects)
- LinkTypes: List of all Types of Links that can be defined between two objects
- ComplianceRules: List of all Compliance Rules
- Platforms: List of all Platform (Azure, AWS, GCP…) and their characteristics
- Regions: List of all Regions
- Regions: Details about Billing
Categories are used to classify the types defined in Cloudockit. Categories are hierarchical so a Category can have a ParentId Attribute which defines the hierarchy.
Each Category has the following attributes:
Id | Unique Identifier of the Category |
Name | Name (English) of the Category |
TranslatedName | Translations for the name |
ParentId | Null if root, Parent ID otherwise |
Description | Textual description of the meaning of the Category |
Categories | Child Categories |
There can be multiple categories implemented in Cloudockit. Currently only the TBM Categories are supported (cf. https://tbmcouncil.jiveon.com/docs/DOC-7736 for more details). To support multiple categories, multiple Categories subsection with suffixes are used like Categories_TBM.
Example:
{
"Categories_TBM": [
{
"Id": "Infrastructure",
"Name": "Infrastructure",
"TranslatedName": {
"fr": "Infrastructure"
},
"ParentId": null,
"Description": null
},
{
"Id": "ComputeAndContainer",
"Name": "Compute And Container",
"TranslatedName": {
"fr": "..."
},
"ParentId": "Infrastructure",
"Description": null
},
{
"Id": "Compute",
"Name": "Compute",
"TranslatedName": {
"fr": "Compute"
},
"ParentId": "ComputeAndContainer",
"Description": null
}
]
}
In this section, all the types are defined with their properties, categories, template, and other attributes.
The Types are hierarchical and a ParentId attribute is used to define the hierarchy.
Type is used for true inheritance like an Azure Virtual Machine that has some properties of a Virtual Machine. This is not used to define a similar classification like a Network Card and a Subnet that are two network components but completely different components. To indicate similar classification, the categories should be used instead of Type Inheritance.
Each type has the following attributes:
Id | Unique Identifier of the Type |
Name | Name of the Type |
ParentID | Null if root, Parent ID otherwise |
CategoryId_TBM | Id of the Category TBM (cf. previous section) where the Type is classified. This is suffixed to allow multiple categories (like TBM) |
CategoryId_CDK | Id of the Category CDK (cf. previous section) where the Type is classified. This is suffixed to allow multiple categories (like CDK) |
HTMLTemplate | Template (format HTML) to display the documentation of this object type. It includes templating using HandleBar. |
MDTemplate | Template (format MD) to display the documentation of this object type. It includes templating using HandleBar. |
DiagramIconMasterShapeName | Master Shape Name in Visio Stencil that represent the object. Null if object is not displayed in Diagrams. |
PictureBase64 | Base64 encoded picture that represent the object type graphically. |
IsPhysicalObject | True if the object exists in the Cloud Platform (for example a Virtual Machine)
False if the object does not exist in the Cloud Platform (for example an Application that contains resources based on tag and that was automatically inferred) |
IsTopLevelObject | The object exists as a top-level object in the Cloud Provider. For example, a Virtual Network exist in Azure, but a Subnet is just inside the Virtual Network object. |
PlatformId | Id of the platform if the type only applies for a specific platform. For example, EC2 Instance type has PlatformId set to AWS. |
Properties | List of properties for the type.
The properties are specific to the type and parent type’s properties are not repeated in children properties. It means that a type full properties list is the merge of its properties and all the parents’ properties. Each Property defines the following attributes:
|
Example:
{
"Name": "Azure Subnet",
"Id": "AzureSubnet",
"ParentId": "Subnet",
"CategoryId_TBM": "CDKCategoryTBM_InfrastructureServices_Network_VirtualPrivateNetwork",
"CategoryLevel1_TBM": "Infrastructure Services ",
"CategoryLevel2_TBM": "Network",
"CategoryLevel3_TBM": "Virtual Private Network",
"DiagramIconMasterShapeName": "AzSubnet",
"PictureBase64": null,
"IsTopLevelObject": null,
"IsPhysicalObject": null,
"HTMLTemplate": "<div><h2>Subnet {{Name}}</h2> Adress Prefix is {{AddressPrefix}}</div>",
"MDTemplate": "#Subnet {{Name}} Adress Prefix is {{AddressPrefix}}",
"PlatformId": "Azure",
"Properties": [
{
"Id": "IpConfigurations",
"Binding": "IpConfigurations",
"DisplayName": "IP Configurations",
"Children": [
{
"Properties": [
{
"Id": "Name",
"Binding": "Name",
"DisplayName": "Name"
},
{
"Id": "PublicIP",
"Binding": "PublicIP",
"DisplayName": "Public IP Address"
},
{
"Id": "PrivateIPAddress",
"Binding": "PrivateIPAddress",
"DisplayName": "Private IP Address"
}
]
}
]
}
]
}
Each LinkType has the following attributes:
Id | Unique Identifier of the Link Type |
DisplayName | Display Name |
TranslatedDisplayName | Translated Display Name |
Description | Short description of the link type |
FromToLabel | Text to use to show dependency from – to |
ToFromLabel | Text to use to show dependency to – from |
Example | Use cases of this type of link |
Example:
{
"Id": "Generalization",
"DisplayName": "Generalization",
"TranslatedDisplayName": {
"fr": "Généralisation"
},
"Description": "A generalization relationship indicates that a specialized (child) model element is based on a general (parent) model element",
"TranslatedDescription": null,
"FromToLabel": "is a generalization of",
"TranslatedFromToLabel": null,
"ToFromLabel": "is a specialisation of",
"TranslatedToFromLabel": null,
"Examples": [
"A Virtual Machine is a generalization of an EC2 Instance."
]
}
Each Compliance Rule has the following attributes:
Id | Unique Identifier of the Rule |
Code | Internal Code of the rule |
DisplayName | Display Name |
TranslatedDisplayName | Translated Display Name |
Description | Short description of the compliance rules |
Criticity | Criticity of the Rule (High, Medium, Low) |
Type | Type of the Rule (Security, Billing, BestPractices) |
Category | User Defined Category |
JsonTrigger | Trigger of the rule (json definition) |
Example:
{ "Id": "CDK_AppServices_NotHttpsMandary", "DisplayName": "CDK AppServices NotHttpsMandary", "TranslatedDisplayName": null, "Description": "This rule ensure App Service is HTTPS configured", "Criticity": "High", "Type": "Security", "Category": "AppServices", "JsonTrigger": "" }
Each Platform has the following attributes:
Id | Unique Identifier of the Platform |
Name | Name of the Platform |
DisplayName | Display Name |
PictureBase64 | Picture Base 64 of the Logo of the Platform |
SeeMoreAt | Hyperlink of the platform |
Example:
{
"Id": "Azure",
"Name": "Azure",
"PictureBase64": "",
"SeeMoreAt": "https://azure.microsoft.com"
}
Each Region has the following attributes:
Id | Unique Identifier of the Region |
SystemName | Name of the Region (internal Code of the Cloud Provider) |
DisplayName | Display Name of the Region |
PlatformId | Id of the Platform where it belongs |
Latitude | Latitude of the Region |
Longitude | Longitude of the Region |
Iso | Iso Code of the Country (2 letters) |
Iso3 | Iso Code of the Country (3 letters) |
Continent | Continent of the Region |
Capital | Capital of the Region |
CurrencyCode | Currency of the Region |
Annexes
ANNEX 1 – SAMPLE JSON FILE
{
"Properties": {
"SchemaVersion": "2.0",
"GeneratorAssemblyVersion": "20.0",
"GenerationDateUTC": "2019-07-08T22:09:39.0896792+00:00",
"GenerationDurationSeconds": "1200",
"Settings": {}
},
"Objects": [
{
"Id": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1",
"Name": "Visual Studio Premium with MSDN - PASCALWANADOO",
"EnvironmentID": "275ddf79-b240-44e7-9916-f24175b451b1",
"EnvironmentName": "Visual Studio Premium with MSDN - PASCALWANADOO",
"TypeID": "AzureSubscription",
"TypeName": "Azure Subscription",
"AttachedDocuments": [
{
"extension": "vsdx",
"fileName": "globalDiagram.vsdx",
"displayName": "Global Diagram",
"url": "sotrage.azure.com/123/globalDiagram.vsdx",
"content": null
},
{
"extension": "vsdx",
"name": "byLocationDiagram.vsdx",
"displayName": "By Location Diagram",
"url": "sotrage.azure.com/123/byLocationDiagram.vsdx",
"content": null
},
{
"extension": "docx",
"name": "thedoc.docx",
"displayName": "Documentation",
"url": "sotrage.azure.com/123/thedoc.docx",
"content": null
}
],
"Properties": [
{
"Id": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1",
"Name": "Visual Studio Premium with MSDN - PASCALWANADOO"
}
]
},
{
"Id": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1",
"Name": "Rg1",
"EnvironmentID": "275ddf79-b240-44e7-9916-f24175b451b1",
"EnvironmentName": "Visual Studio Premium with MSDN - PASCALWANADOO",
"TypeID": "AzureResourceGroup",
"TypeName": "Azure Resource Group",
"Properties": {
"Id": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1",
"Name": "Rg1"
},
"Links": [
{
"sourceID": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1",
"targetID": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1",
"typeID": "Aggregation"
}
],
"ComplianceRules": null,
"RawDataForInternalUseOnly": null
},
{
"Id": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/myfirstVM",
"Name": "MyFirstVM",
"EnvironmentID": "275ddf79-b240-44e7-9916-f24175b451b1",
"EnvironmentName": "Visual Studio Premium with MSDN - PASCALWANADOO",
"TypeID": "AzureVirtualMachine",
"TypeName": "Azure Virtual Machine",
"Properties": {
"Id": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/myfirstVM",
"Name": "MyFirstVM",
"AvailabilitySetName": "The availability set",
"MaxDataDiskCount": "5",
"NetworkInterfaces": [
{
"Id": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/nic1",
"Name": "Nic1",
"PrivateIP": "10.10.0.2",
"PublicIP": "11.10.0.2"
},
{
"Id": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/nic2",
"Name": "Nic2",
"PrivateIP": "20.10.0.2",
"PublicIP": "21.10.0.2"
}
]
},
"AttachedDocuments": [
{
"extension": "vsdx",
"name": "thediagram.vsdx",
"displayName": "Diagram",
"url": "sotrage.azure.com/123/thediagram.vsdx",
"content": null
},
{
"extension": "docx",
"name": "thedoc.docx",
"displayName": "Documentation",
"url": "sotrage.azure.com/123/thedoc.docx",
"content": null
},
{
"extension": "html",
"name": "webpage.html",
"displayName": "Web Page",
"url": null,
"content": "<body>the vm 789 ...</body>"
}
],
"Links": [
{
"sourceID": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/myfirstVM",
"targetID": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/theVNET/theSubnet",
"typeID": "Connection"
},
{
"sourceID": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1",
"targetID": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/myfirstVM",
"typeID": "Aggregation"
},
{
"sourceID": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1",
"targetID": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/myfirstVM",
"typeID": "Aggregation"
}
],
"ComplianceRules": null,
"RawDataForInternalUseOnly": {
"ADK_ObjectType": "Storage account(this is not the good one, just for the sake of the file...)",
"StoragePrimaryEndpoints": {
"blob": "https://adkjenkinstestdiag235.blob.core.windows.net/",
"queue": "https://adkjenkinstestdiag235.queue.core.windows.net/",
"table": "https://adkjenkinstestdiag235.table.core.windows.net/",
"file": "https://adkjenkinstestdiag235.file.core.windows.net/",
"web": null,
"dfs": null
},
"ResourceLocation": null,
"ResourceGroup": "adkjenkinstest",
"Firewalls": [],
"VirtualNetworkRules": [],
"ADK_DiagramIconMasterShape": "Storage",
"Status": "Primary: Available",
"SkuName": "StandardLRS",
"ADK_GUID": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourceGroups/adkjenkinstest/providers/Microsoft.Storage/storageAccounts/adkjenkinstestdiag235",
"ADK_Location": "eastus",
"CDK_AutoGenerated": true,
"ADK_Name": "adkjenkinstestdiag235",
"CompareResult": {
"AreEqual": true,
"Differences": []
},
"Differences": [],
"AverageValues": {},
"MaxValues": {},
"MinValues": {},
"RoleAssignments": null,
"ManagementLocks": [],
"Tags": [],
"CDK_Platform": "Azure",
"CDKTypeLevel1": "Azure",
"CDKTypeLevel2": "Storage",
"CDKTypeLevel3": "Storage account",
"CDKClassificationLevel1": "Infrastructure Services",
"CDKClassificationLevel2": "Storage",
"CDKClassificationLevel3": "File & Object Storage",
"CDKEnvironmentName": "Visual Studio Premium with MSDN - PASCALWANADOO",
"CDKEnvironmentID": "275ddf79-b240-44e7-9916-f24175b451b1",
"CDK_Stages": "",
"CDK_Applications": "",
"sku": {
"name": "Standard_LRS",
"tier": "Standard",
"resourceType": null,
"kind": null,
"locations": null,
"capabilities": null,
"restrictions": null
},
"kind": "Storage",
"identity": null,
"properties.provisioningState": "Succeeded",
"properties.primaryEndpoints": {
"blob": "https://adkjenkinstestdiag235.blob.core.windows.net/",
"queue": "https://adkjenkinstestdiag235.queue.core.windows.net/",
"table": "https://adkjenkinstestdiag235.table.core.windows.net/",
"file": "https://adkjenkinstestdiag235.file.core.windows.net/",
"web": null,
"dfs": null
},
"properties.primaryLocation": "eastus",
"properties.statusOfPrimary": "available",
"properties.lastGeoFailoverTime": null,
"properties.secondaryLocation": null,
"properties.statusOfSecondary": null,
"properties.customDomain": null,
"properties.secondaryEndpoints": null,
"properties.encryption": {
"services": {
"blob": {
"enabled": true
},
"file": {
"enabled": true
},
"table": null,
"queue": null
},
"keySource": "Microsoft.Storage",
"keyvaultproperties": null
},
"properties.accessTier": null,
"properties.azureFilesAadIntegration": null,
"properties.supportsHttpsTrafficOnly": false,
"properties.networkAcls": {
"bypass": "AzureServices",
"virtualNetworkRules": [],
"ipRules": [],
"defaultAction": "Allow"
},
"properties.isHnsEnabled": null,
"properties.geoReplicationStats": null,
"properties.failoverInProgress": null,
"tags": {},
"location": "eastus",
"id": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourceGroups/adkjenkinstest/providers/Microsoft.Storage/storageAccounts/adkjenkinstestdiag235",
"name": "adkjenkinstestdiag235",
"type": "Microsoft.Storage/storageAccounts",
"CDKCollectionName": "MicrosoftStorageAccounts"
}
},
{
"Id": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/theVNET/theSubnet",
"Name": "theSubnet",
"EnvironmentID": "275ddf79-b240-44e7-9916-f24175b451b1",
"EnvironmentName": "Visual Studio Premium with MSDN - PASCALWANADOO",
"TypeID": "AzureSubnet",
"TypeName": "Azure Subnet",
"Properties": [
{
"AddressPrefix": "124.12.0.1",
"IpConfigurations": [
{
"Name": "myIPConfiguration1",
"PublicIP": "12.14.15.12",
"PrivateIP": "112.14.15.12"
},
{
"Name": "myIPConfiguration2",
"PublicIP": "12.14.15.13",
"PrivateIP": "112.14.15.14"
}
]
}
],
"AttachedDocuments": [
{
"extension": "html",
"name": "webpage.html",
"displayName": "Web Page",
"url": null,
"content": "<body>the subnet theSubnet has the prefix 124.12.0.1</body>"
}
],
"Links": [
{
"sourceID": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/theVNET",
"targetID": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/theVNET/theSubnet",
"typeID": "Aggregation"
},
{
"sourceID": "/subscriptions/275ddf79-b240-44e7-9916-f24175b451b1/resourcegroups/rg1/theVNET/theSubnet",
"targetID": "CDK_AppServices_NotHttpsMandary",
"typeID": "Classification"
}
],
"ComplianceRules": [
"CDK_AppServices_NotHttpsMandary"
],
"RawDataForInternalUseOnly": {}
},
{
"Id": "Concerto",
"Name": "Concerto",
"Type": "Application",
"TypeID": "Application",
"AttachedDocuments": [
{
"extension": "vsdx",
"name": "thediagram",
"url": "sotrage.azure.com/123/thediagram.vsdx",
"content": null
},
{
"extension": "docx",
"name": "thedoc",
"url": "sotrage.azure.com/123/thedoc.docx",
"content": null
},
{
"extension": "html",
"name": "webpage",
"url": null,
"content": "<body>the vm 789 ...</body>"
}
],
"Links": [
{
"sourceID": "343",
"targetID": "789",
"typeID": "345"
}
],
"ComplianceRules": null,
"RawDataForInternalUseOnly": {}
}
],
"Metadata": {
"Categories": [
{
"Id": "Infrastructure",
"Name": "Infrastructure",
"TranslatedName": {
"fr": "Infrastructure"
},
"ParentId": null,
"Description": null
},
{
"Id": "ComputeAndContainer",
"Name": "Compute And Container",
"TranslatedName": {
"fr": "..."
},
"ParentId": "Infrastructure",
"Description": null
},
{
"Id": "Compute",
"Name": "Compute",
"TranslatedName": {
"fr": "Compute"
},
"ParentId": "ComputeAndContainer",
"Description": null
}
],
"Types": [
{
"Name": "Component",
"Id": "Component",
"ParentId": null,
"CategoryId": null,
"CategoryLevel1": null,
"CategoryLevel2": null,
"CategoryLevel3": null,
"HTMLTemplate": null,
"MDTemplate": null,
"DiagramIconMasterShapeName": null,
"PictureBase64": null,
"IsPhysicalObject": false,
"IsTopLevelObject": false,
"PlatformId": null,
"Properties": [
{
"Name": "Id",
"Binding": "Id",
"DisplayName": "Unique Component Identifier",
"Type": "string",
"TranslatedDisplayName": {
"fr": "Identificant unique du composant"
}
},
{
"Name": "Name",
"Binding": "Name",
"DisplayName": "Name",
"Type": "string",
"TranslatedDisplayName": {
"fr": "Nom"
}
}
]
},
{
"Name": "Azure Virtual Machine",
"Id": "AzureVirtualMachine",
"ParentId": "VirtualMachine",
"CategoryId": "Compute",
"CategoryLevel1": "Infrastructure",
"CategoryLevel2": "Compute & Container",
"CategoryLevel3": "Compute",
"HTMLTemplate": "<div><h2>Virtual Machine {{Name}}</h2> The vm has the following availability set : {{AvailabilitySetName}}</div>...",
"MDTemplate": "#Virtual Machine {{Name}} ##The vm has the following availability set : {{AvailabilitySetName}}",
"DiagramIconMasterShapeName": "AzVirtualMachine",
"IsTopLevelObject": true,
"IsPhysicalObject": true,
"PlatformId": "Azure",
"Properties": [
{
"Name": "AvailabilitySetName",
"Binding": "AvailabilitySetName",
"DisplayName": "Availability Set",
"Type": "string",
"TranslatedDisplayName": {
"fr": "Zone de disponibilité"
}
},
{
"Name": "NumberOfCores",
"Binding": "VMSizeDetails.MaxDataDiskCount",
"DisplayName": "Max Data Disk Count",
"Type": "string",
"TranslatedDisplayName": {
"fr": "Nombre de disque maximum"
}
}
]
},
{
"Name": "EC2 Instance",
"Id": "EC2Instance",
"ParentId": "VirtualMachine",
"CategoryId": "Compute",
"CategoryLevel1": "Infrastructure",
"CategoryLevel2": "Compute & Container",
"CategoryLevel3": "Compute",
"PlatformId": "AWS"
},
{
"Name": "Virtual Machine",
"Id": "VirtualMachine",
"ParentId": "Component",
"CategoryId": "Compute",
"CategoryLevel1": "Infrastructure",
"CategoryLevel2": "Compute & Container",
"CategoryLevel3": "Compute",
"DiagramIconMasterShapeName": null,
"PictureBase64": null,
"IsTopLevelObject": null,
"IsPhysicalObject": null,
"PlatformId": null,
"Properties": [
{
"Name": "NumberOfCores",
"Binding": "NumberOfCores",
"DisplayName": "Number of Cores",
"Type": "string",
"TranslatedDisplayName": {
"fr": "Nombre de coeur"
}
}
]
},
{
"Name": "Subnet",
"Id": "Subnet",
"ParentId": "VirtualPrivateNetwork",
"Type_Level0": "Component",
"Type_Level1": "Infrastructure",
"Type_Level2": "Network",
"Type_Level3": "Virtual Private Network",
"Type_Level4": "Subnet",
"Type_Level5": null,
"DiagramIconMasterShapeName": null,
"PictureBase64": null,
"IsTopLevelObject": null,
"IsPhysicalObject": null,
"HTMLTemplate": null,
"MDTemplate": null,
"PlatformId": null,
"Properties": [
{
"Name": "AddressPrefix",
"Binding": "AddressPrefix",
"DisplayName": "Address Prefix",
"Type": "string",
"TranslatedDisplayName": {
"fr": "Prefix d'adresse"
}
},
{
"Name": "Peerings",
"Binding": "Peerings",
"DisplayName": "Peerings",
"Type": "list",
"Items": [
{
"Properties": [
{
"Name": "Name",
"Binding": "Name",
"DisplayName": "Name",
"Type": "string"
}
]
}
]
}
]
},
{
"Name": "Azure Subnet",
"Id": "AzureSubnet",
"ParentId": "Subnet",
"Type_Level0": "Component",
"Type_Level1": "Infrastructure",
"Type_Level2": "Network",
"Type_Level3": "Virtual Private Network",
"Type_Level4": "Virtual Machine",
"Type_Level5": "Azure Subnet",
"DiagramIconMasterShapeName": "AzSubnet",
"PictureBase64": null,
"IsTopLevelObject": null,
"IsPhysicalObject": null,
"HTMLTemplate": "<div><h2>Subnet {{Name}}</h2> Adress Prefix is {{AddressPrefix}}</div>",
"MDTemplate": "#Subnet {{Name}} Adress Prefix is {{AddressPrefix}}",
"PlatformId": "Azure",
"Properties": [
{
"Name": "IpConfigurations",
"Binding": "IpConfigurations",
"DisplayName": "IP Configurations",
"Children": [
{
"Properties": [
{
"Name": "Name",
"Binding": "Name",
"DisplayName": "Name"
},
{
"Name": "PublicIP",
"Binding": "PublicIP",
"DisplayName": "Public IP Address"
},
{
"Name": "PrivateIPAddress",
"Binding": "PrivateIPAddress",
"DisplayName": "Private IP Address"
}
]
}
]
}
]
}
],
"LinkTypes": [
{
"Id": "Generalization",
"DisplayName": "Generalization",
"TranslatedDisplayName": {
"fr": "Généralisation"
},
"Description": "A generalization relationship indicates that a specialized (child) model element is based on a general (parent) model element",
"TranslatedDescription": null,
"FromToLabel": "is a generalization of",
"TranslatedFromToLabel": null,
"ToFromLabel": "is a specialisation of",
"TranslatedToFromLabel": null,
"Examples": [
"A Virtual Machine is a generalization of an EC2 Instance."
]
},
{
"Id": "Aggregation",
"DisplayName": "Aggregation",
"Description": "An aggregation relationship depicts a classifier as a part of, or as subordinate to, another classifier",
"FromToLabel": "contains",
"ToFromLabel": "belongs to",
"Examples": [
"An Azure Resource Group contains Azure Resources.",
"An AWS AutoScaling Group contains EC2 instances."
]
},
{
"Id": "Connection",
"DisplayName": "Connection",
"Description": "A connection relationship indicates that a system is connected to another system and it uses it.",
"FromToLabel": "is connected to",
"ToFromLabel": "is connected to",
"Examples": [
"A Network Interface Card is connected to a Virtual Machine.",
"An Azure Traffic Manager is connected to an Azure App Service.",
"An Azure App Service is connected to an Azure SQL Database.",
"An Azure App Service is connected to an Azure Key Vault."
]
},
{
"Id": "Classification",
"DisplayName": "Classification",
"Description": "A classification relationship indicates that an object has a specified property or type.",
"FromToLabel": "is classified in",
"ToFromLabel": "has the following object classified in it:",
"Examples": [
"A Virtual Machine is classified in BusinessRuleViolation1.",
"A Virtual Machine is classified in Azure."
]
}
],
"ComplianceRules": [
{
"Id": "CDK-ComplianceRule-CDK_AppServices_NotHttpsMandary",
"Code": "CDK_AppServices_NotHttpsMandary",
"DisplayName": "CDK AppServices NotHttpsMandary",
"TranslatedDisplayName": null,
"Description": "This rule ensure App Service is HTTPS configured",
"Criticity": "High",
"Type": "Security",
"Category": "AppServices",
"JsonTrigger": ""
},
{
"Id": "CDK_Networking_NoNSG",
"Criticity": "High",
"Type": "Security",
"JsonTrigger": ""
}
],
"Platforms": [
{
"Id": "Azure",
"Name": "Azure",
"PictureBase64": "",
"SeeMoreAt": "https://azure.microsoft.com"
},
{
"Id": "AWS",
"Name": "AWS",
"PictureBase64": "",
"SeeMoreAt": "https://aws.amazon.com/"
}
],
"DataCenters": [
{
"Id": "CDK-DataCenter-Azure-eastus",
"Name": "east-us",
"DisplayName": "East US",
"PlatformId": "Azure",
"Location": {
"Lat": "72.0",
"Long": "75.0",
"TextAdress": ""
}
}
]
}
}