From 20331593e73ec3fbcb81300e9a666497365dba13 Mon Sep 17 00:00:00 2001 From: Jurjen Ladenius Date: Wed, 20 Apr 2022 11:03:12 +0200 Subject: [PATCH] Added Creatondate consoleapp and tagging policy --- 2022-04-19 azure_appservice_certificates.csv | 129 +++ ConsoleApps/.gitignore | 334 +++++++ ConsoleApps/AzureRestApi/AzureRestApi.sln | 25 + .../AzureRestApi/AzureRestApi.csproj | 26 + .../Models/Api/ResourcesResponse.cs | 9 + .../Models/Api/SubscriptionResponse.cs | 9 + .../AzureRestApi/Models/Api/TagProperties.cs | 9 + .../AzureRestApi/Models/Resources/Resource.cs | 28 + .../Models/Resources/Subscription.cs | 20 + .../AzureRestApi/Models/Resources/TagTags.cs | 7 + .../AzureRestApi/Models/Settings.cs | 8 + .../AzureRestApi/AzureRestApi/Program.cs | 38 + .../Repositories/AccessTokenRepository.cs | 40 + .../Repositories/AzureResourceRepository.cs | 38 + .../AzureSubscriptionRepository.cs | 39 + .../Repositories/AzureTagRepository.cs | 53 ++ .../Services/CreatedOnDateService.cs | 61 ++ .../AzureRestApi/Services/OptionService.cs | 62 ++ .../AzureRestApi/appsettings.json | 13 + .../ConsoleApp1/ConsoleApp1.csproj | 8 + .../AzureRestApi/ConsoleApp1/Program.cs | 12 + ConsoleApps/x.json | 846 ++++++++++++++++++ Policies/PolicyTagCreatedOnDate.json | 52 ++ .../Tools/RemediateAllSubscriptions.ps1 | 21 + 24 files changed, 1887 insertions(+) create mode 100644 2022-04-19 azure_appservice_certificates.csv create mode 100644 ConsoleApps/.gitignore create mode 100644 ConsoleApps/AzureRestApi/AzureRestApi.sln create mode 100644 ConsoleApps/AzureRestApi/AzureRestApi/AzureRestApi.csproj create mode 100644 ConsoleApps/AzureRestApi/AzureRestApi/Models/Api/ResourcesResponse.cs create mode 100644 ConsoleApps/AzureRestApi/AzureRestApi/Models/Api/SubscriptionResponse.cs create mode 100644 ConsoleApps/AzureRestApi/AzureRestApi/Models/Api/TagProperties.cs create mode 100644 ConsoleApps/AzureRestApi/AzureRestApi/Models/Resources/Resource.cs create mode 100644 ConsoleApps/AzureRestApi/AzureRestApi/Models/Resources/Subscription.cs create mode 100644 ConsoleApps/AzureRestApi/AzureRestApi/Models/Resources/TagTags.cs create mode 100644 ConsoleApps/AzureRestApi/AzureRestApi/Models/Settings.cs create mode 100644 ConsoleApps/AzureRestApi/AzureRestApi/Program.cs create mode 100644 ConsoleApps/AzureRestApi/AzureRestApi/Repositories/AccessTokenRepository.cs create mode 100644 ConsoleApps/AzureRestApi/AzureRestApi/Repositories/AzureResourceRepository.cs create mode 100644 ConsoleApps/AzureRestApi/AzureRestApi/Repositories/AzureSubscriptionRepository.cs create mode 100644 ConsoleApps/AzureRestApi/AzureRestApi/Repositories/AzureTagRepository.cs create mode 100644 ConsoleApps/AzureRestApi/AzureRestApi/Services/CreatedOnDateService.cs create mode 100644 ConsoleApps/AzureRestApi/AzureRestApi/Services/OptionService.cs create mode 100644 ConsoleApps/AzureRestApi/AzureRestApi/appsettings.json create mode 100644 ConsoleApps/AzureRestApi/ConsoleApp1/ConsoleApp1.csproj create mode 100644 ConsoleApps/AzureRestApi/ConsoleApp1/Program.cs create mode 100644 ConsoleApps/x.json create mode 100644 Policies/PolicyTagCreatedOnDate.json create mode 100644 Powershell/Tools/RemediateAllSubscriptions.ps1 diff --git a/2022-04-19 azure_appservice_certificates.csv b/2022-04-19 azure_appservice_certificates.csv new file mode 100644 index 0000000..6e723b9 --- /dev/null +++ b/2022-04-19 azure_appservice_certificates.csv @@ -0,0 +1,129 @@ +"SubscriptionId","CertificateId","ResourceGroupName","SubjectName","ThumbPrint","Comment","ExpirationDate","TotalDays" +"f17df03f-6856-4d4e-b7ce-67d3ccbfad2e","/subscriptions/f17df03f-6856-4d4e-b7ce-67d3ccbfad2e/resourceGroups/DMEL-Web/providers/Microsoft.Web/certificates/www.dmel-fundraiser.nl-dmel","DMEL-Web","www.dmel-fundraiser.nl","3301CFA72E486812FC023DC631492358A3CB009E","","28-9-2022 23:59:59","162,41032921257522" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/Authorization/providers/Microsoft.Web/certificates/accept-authorization.effectory.com","Authorization","accept-authorization.effectory.com","1527574EC71A7BEA0CC5C900FEE5EC3693DE545B","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/Authorization/providers/Microsoft.Web/certificates/authorization.effectory.com","Authorization","authorization.effectory.com","68201B66FBB31B9FB2EBFDE9D518111436549660","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/Authorization/providers/Microsoft.Web/certificates/stage-authorization.effectory.com","Authorization","stage-authorization.effectory.com","41D0BEACBC15235CCFAD8ACB279E052A98C45621","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/Authorization/providers/Microsoft.Web/certificates/test-authorization.effectory.com","Authorization","test-authorization.effectory.com","B78FC812C903A31CBAF75DF81B377100596A25CC","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/accept-response-webapi.effectory.com","customer","accept-response-webapi.effectory.com","B2EBC52DEB10D29A94BB6AC4E4193C05940E65FA","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/customer.effectory.com","customer","customer.effectory.com","5F52809CDC06D9FB245FC73B9C6335131DBE6886","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/ecestore.effectory.com","customer","ecestore.effectory.com","95D8C830C158786BF2BB0DBEA946E975F534F27D","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/featuretoggle-webapi.effectory.com","customer","featuretoggle-webapi.effectory.com","355AB440C3D7CA7D10C9DA9BA8682820E43CCFE8","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/files-webapi.effectory.com","customer","files-webapi.effectory.com","AE3EEA0A279B0EA8AAE614976028F492FC61853E","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/internetspiegel-customer-customer-WestEuropewebspace","customer","internetspiegel.customer.effectory.com,www.internetspiegel.customer.effectory.com","6BDE5E095930AD762BD839D7D5E5E69FC77F6304","","18-9-2022 11:57:33","151,90863939776042" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/My-Effectory-customer-WestEuropewebspace","customer","my.effectory.com,www.my.effectory.com","5CDCD4C3D3D0897AEFEA7628BE91EB68A8361A74","","9-7-2022 12:08:18","80,9161046755382" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/my-reporting-internetspiegel.effectory.com","customer","my-reporting-internetspiegel.effectory.com","B5A29F79BAA55C85345451EEB97B3B5BBB087167","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/my-reporting.effectory.com","customer","my-reporting.effectory.com","5198334B471C8CBA0D9794D202729D3620EB46EA","","22-7-2022 23:59:59","94,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/powerbi.effectory.com","customer","powerbi.effectory.com","ACCEC9B881FE00E93125390749972A552F02DA80","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/reporting-webapi.effectory.com","customer","reporting-webapi.effectory.com","322FC4DA9E3546D4B01E47922734C57F88EA4E6A","","22-7-2022 23:59:59","94,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/response-webapi.effectory.com","customer","response-webapi.effectory.com","85916434E2B804D0F77859B0934FEE4639354BE4","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/stage-customer.effectory.com","customer","stage-customer.effectory.com","AA0052058F71529F87E7D164610C8299AA88A5EF","","25-7-2022 23:59:59","97,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/stage-ecestore.effectory.com","customer","stage-ecestore.effectory.com","A2487792C44F3AEA9B57F0547D40DB41B6B495E0","","22-7-2022 23:59:59","94,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/stage-featuretoggle-webapi.effectory.com","customer","stage-featuretoggle-webapi.effectory.com","81E7061FF3CE0E1406D5C8DD1B4AC87F5F239847","","25-7-2022 23:59:59","97,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/stage-files-webapi.effectory.com","customer","stage-files-webapi.effectory.com","8953CFE6B2BA10941CD428A3B30B77FC2E6F87E4","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/stage-my-reporting-internetspiegel.effectory.com","customer","stage-my-reporting-internetspiegel.effectory.com","7EAD0657AF2BC5CBD272A5B78CAB449284078C54","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/stage-my-reporting.effectory.com","customer","stage-my-reporting.effectory.com","839C15211493AB7F8FFB918910CB14AF837088CD","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/stage-reporting-webapi.effectory.com","customer","stage-reporting-webapi.effectory.com","C363F17570F3D2CBE271B4622A5A7F40911C60A7","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/stage-response-webapi.effectory.com","customer","stage-response-webapi.effectory.com","657E0ADDF68A16428A271F641A404835B8675962","","22-7-2022 23:59:59","94,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/stage-startasurvey-webapi.effectory.com","customer","stage-startasurvey-webapi.effectory.com","CE0767255BF4D18FDE5BE5277A98571D5F3A68CC","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/stage-survey-webapi.effectory.com","customer","stage-survey-webapi.effectory.com","8E364E5CB03522D6C4499AEF3B4A58E54296D4D8","","22-7-2022 23:59:59","94,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/startasurvey-webapi.effectory.com","customer","startasurvey-webapi.effectory.com","37A5022094F3F012726A647622EA6B13A8052482","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/survey-webapi.effectory.com","customer","survey-webapi.effectory.com","ED9FEF61CAAC616BAF1F5F30F6F30BBCFAC8E65F","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/test-my-reporting-internetspiegel.effectory.com","customer","test-my-reporting-internetspiegel.effectory.com","E6396A944526415A0ECDDF45BEB8E69E18908776","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/test-my-reporting.effectory.com","customer","test-my-reporting.effectory.com","8B5B96F5AFA802783E7A6624C73861021AA84EA7","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/test-reporting-webapi.effectory.com","customer","test-reporting-webapi.effectory.com","FE23AFCA6ADFC85C055ECFEF000D603503B7A5A7","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/test-response-webapi.effectory.com","customer","test-response-webapi.effectory.com","E2A6E6E2F6550D459737DF95510D1CC77FF40A50","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/customer/providers/Microsoft.Web/certificates/widget.effectory.com-widget-effectory","customer","widget.effectory.com","8CD5B4DD280540A94E5B6A5B993C3EC992A89AFA","","29-7-2022 23:59:59","101,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/effectorycore/providers/Microsoft.Web/certificates/applicationsettings-core.effectory.com","effectorycore","applicationsettings-core.effectory.com","3F7E09F7F57E0148BA7C3E721B43EAEC789F32CD","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/effectorycore/providers/Microsoft.Web/certificates/core-calculation.effectory.com","effectorycore","core-calculation.effectory.com","3698D468CB71B1511EDCDB8CC97EDECC9756FBEC","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/effectorycore/providers/Microsoft.Web/certificates/core-measurement.effectory.com","effectorycore","core-measurement.effectory.com","B3BA762EB58ABB309AE56ADBCB6839AC019CBB74","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/effectorycore/providers/Microsoft.Web/certificates/core-reporting.effectory.com","effectorycore","core-reporting.effectory.com","A0BCEE3423B5288884A5E282B0141111B0CB1DD1","","22-7-2022 23:59:59","94,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/effectorycore/providers/Microsoft.Web/certificates/test-applicationsettings-core.effectory.com","effectorycore","test-applicationsettings-core.effectory.com","73433DDDF3139585D634895C513FC7391EEA7C66","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/effectorycore/providers/Microsoft.Web/certificates/test-core-calculation.effectory.com","effectorycore","test-core-calculation.effectory.com","0FD93766938B98B2073A879F881A5EF32D6F2138","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/effectorycore/providers/Microsoft.Web/certificates/test-core-measurement.effectory.com","effectorycore","test-core-measurement.effectory.com","8F90E74723A6F97705380600469ACD7423E34639","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/effectorycore/providers/Microsoft.Web/certificates/test-core-reporting.effectory.com","effectorycore","test-core-reporting.effectory.com","4FE890114FB2502DA5999BE26E723DBB79DC8DE2","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/accept-external-projectapi.effectory.com","internalapplications","accept-external-projectapi.effectory.com","4EBB0C10AEE6820D3E6279347A264513038546D4","","25-7-2022 23:59:59","97,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/beta-project.effectory.com","internalapplications","beta-project.effectory.com","D0035A68EC2511589EA81DBC63533C6C6D152CAB","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/external-projectapi.effectory.com","internalapplications","external-projectapi.effectory.com","E8AD0F22DFC9538FF7FAD784B4BB526D6A5A80E8","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/project-internalapplications-WestEuropewebspace","internalapplications","project.effectory.com,www.project.effectory.com","B150D9DA612BB7F37463D10158954F994110799F","","18-9-2022 11:58:12","151,9090907866493" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/project-internetspiegel-internalapplications-WestEuropewebspace","internalapplications","project.internetspiegel.effectory.com,www.project.internetspiegel.effectory.com","FE765748446BEAF7D6BA5633694D65C0D60C4289","","18-9-2022 11:58:42","151,90943800887152" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/project-notificationapi.effectory.com","internalapplications","project-notificationapi.effectory.com","618A7C75DDD39C5907E21EC972024C29F26A26FD","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/projectapi.effectory.com","internalapplications","projectapi.effectory.com","1C27659E67399E5C49EF4777E86F6F79A2520CC2","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/stage-beta-project.effectory.com","internalapplications","stage-beta-project.effectory.com","8B48A49BCA78696A82CCFE38CC1004322825D189","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/stage-external-projectapi.effectory.com","internalapplications","stage-external-projectapi.effectory.com","073BF0F90E836A5615862C1C5D48962A09F1B73E","","25-7-2022 23:59:59","97,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/stage-project-notificationapi.effectory.com","internalapplications","stage-project-notificationapi.effectory.com","4A6D15C8CEF814C8DC0CE0D6D46C8AD9C84001FC","","25-7-2022 23:59:59","97,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/stage-project.effectory.com","internalapplications","stage-project.effectory.com","C0C2D786B85402DBB1ABBD383270F00A74BC936C","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/stage-project.internetspiegel.effectory.com","internalapplications","stage-project.internetspiegel.effectory.com","F69FED30ADE6B05CBC4B4E076A9D46E6B8E3AA64","","25-7-2022 23:59:59","97,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/stage-projectapi.effectory.com","internalapplications","stage-projectapi.effectory.com","C70B97E6C17D68A3A97DB0F1A19523871EE7A925","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/stage-webapi-webjobs.effectory.com","internalapplications","stage-webapi-webjobs.effectory.com","54D65BC0A45E2EC69BED5DF6016AA5FEE3B1E517","","25-7-2022 23:59:59","97,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/test-beta-project.effectory.com","internalapplications","test-beta-project.effectory.com","5789B8722306CC836E51AEE0D853EBF40DEA9228","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/test-external-projectapi.effectory.com","internalapplications","test-external-projectapi.effectory.com","ED9BC47657187CE4CCFA57A723CB1C1C717BC99F","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/test-mailings-beta-project.effectory.com","internalapplications","test-mailings-beta-project.effectory.com","7C441460D7BE6D926AD2D376A625D28EB3C8D3D6","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/test-mailings-projectapi.effectory.com","internalapplications","test-mailings-projectapi.effectory.com","07809ECB2D0524C2D9D1E41FDDED6F5431A05EC6","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/test-project-notificationapi.effectory.com","internalapplications","test-project-notificationapi.effectory.com","CE0F12F11CC4E5EA1AB02411E8DCF8BCA8516EC5","","25-7-2022 23:59:59","97,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/test-projectapi.effectory.com","internalapplications","test-projectapi.effectory.com","B5D8AC54CF7F2BD3ABF97C31274DACAD3EF9F682","","22-7-2022 23:59:59","94,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/internalapplications/providers/Microsoft.Web/certificates/webapi-webjobs.effectory.com","internalapplications","webapi-webjobs.effectory.com","62C9482D0D3F34FE2E664F8FE51703BF57558D6B","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/mailings/providers/Microsoft.Web/certificates/0608076D9F3A8EFDD2BA040E936A11E21B037897-mailings-WestEuropewebspace","mailings","*.effectory.com,effectory.com","0608076D9F3A8EFDD2BA040E936A11E21B037897","","7-8-2020 15:50:42","-619,9294508800174" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/mailings/providers/Microsoft.Web/certificates/Mailings-WebApi-mailings-WestEuropewebspace","mailings","mailings-webapi.effectory.com,www.mailings-webapi.effectory.com","F0E3ABBB5C9B23FE70349DA48E3029ED2351DB9C","","1-6-2021 09:54:07","-322,1770781948322" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/mailings/providers/Microsoft.Web/certificates/mailings-webapi.effectory.com-mailings-web-api","mailings","mailings-webapi.effectory.com","BF731BCA566385FC31AC409FC8E52DA60DEDD6FC","","21-8-2022 23:59:59","124,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/mailings/providers/Microsoft.Web/certificates/stage-mailings-webapi.effectory.com-mailings-web-api(stage)","mailings","stage-mailings-webapi.effectory.com","B8BDC71EFA39BAF6E7200AB361CDB6C8B2771E2A","","21-8-2022 23:59:59","124,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/accept-survey.effectory.com","respondent","accept-survey.effectory.com","6B00E4CC267D29C6D1C19EE3F697475C2871F580","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/internetspiegel-survey05-respondent-WestEuropewebspace","respondent","internetspiegel.survey05.effectory.com,www.internetspiegel.survey05.effectory.com","927BB1DEF5C3E04569006D32A68F82889F4D5CA3","","18-9-2022 11:57:18","151,90846578664932" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/internetspiegel-survey-respondent-WestEuropewebspace","respondent","internetspiegel.survey.effectory.com,www.internetspiegel.survey.effectory.com","EC9F2F6EEEC3CE26C70316AB91EB2C0D6F045DD6","","18-9-2022 11:58:29","151,90928754590857" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/internetspiegel.myresults.effectory.com","respondent","internetspiegel.myresults.effectory.com","144CEF507C0ABE4D48FB9054F2DB6F1A580D4380","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/login.effectory.com-login-survey","respondent","login.effectory.com","BAA73BDE174AF3B60939C27D0DD039AC518EE87C","","20-8-2022 23:59:59","123,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/login.effectory.nl-login-survey","respondent","login.effectory.nl","49DED6BB6F48D6A270711079FDB99FE6B4026D9C","","20-8-2022 23:59:59","123,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/login.internetspiegel.effectory.com-login-survey","respondent","login.internetspiegel.effectory.com","986287D8065732AA438DA6E2B4D490D3F281B2C4","","20-8-2022 23:59:59","123,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/login.internetspiegel.effectory.nl-login-survey","respondent","login.internetspiegel.effectory.nl","EBDA73112CF1A34C170211F19FCF2B42EAD623E6","","20-8-2022 23:59:59","123,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/myfeedback.effectory.com-myfeedback-effectory","respondent","myfeedback.effectory.com","13558CB439FD4FDB1338B10E1C2D80E938B1AB29","","22-6-2022 23:59:59","64,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/myfeedback.internetspiegel.effectory.com-myfeedback-effectory","respondent","myfeedback.internetspiegel.effectory.com","796902B3E73A4FCFA6C1306298E356FD61D109B3","","22-6-2022 23:59:59","64,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/myresults.effectory.com","respondent","myresults.effectory.com","3FFA53E104D113B7D7F9A8750AB00D9DF3FAC25E","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/questionnaire-webapi.effectory.com","respondent","questionnaire-webapi.effectory.com","299C42C5DEF8854FBE36775490049A458F9C9684","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/stage-internetspiegel.survey.effectory.com","respondent","stage-internetspiegel.survey.effectory.com","B1140915B07925523F008939315B0A7EA9590372","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/stage-login.effectory.com","respondent","stage-login.effectory.com","FC7DDA15B6A98E96D67114C3B474D8202D48D93D","","25-7-2022 23:59:59","97,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/stage-myfeedback.effectory.com","respondent","stage-myfeedback.effectory.com","7AF4DC58A0ABC260444D2E33A755FD8E30F3FA20","","25-7-2022 23:59:59","97,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/stage-myfeedback.internetspiegel.effectory.com-myfeedback-effectory(stage)","respondent","stage-myfeedback.internetspiegel.effectory.com","FBE8D00352971D21C32461ABC64490DB642C2022","","11-8-2022 23:59:59","114,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/stage-questionnaire-webapi.effectory.com","respondent","stage-questionnaire-webapi.effectory.com","F8BB0AF2BE6F9C39DD5DD8114DADC84750AAD330","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/stage-survey05.effectory.com","respondent","stage-survey05.effectory.com","0E6405EFBA992501D185268447E370736A5D5BDC","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/stage-survey.effectory.com","respondent","stage-survey.effectory.com","847C2F5C595A6F679CB44E5AC7D420442C7EF747","","25-7-2022 23:59:59","97,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/survey05.effectory.com","respondent","survey05.effectory.com","3DFE0E97705CA581AD7406D186092BF778FBE20B","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/survey-respondent-WestEuropewebspace","respondent","survey.effectory.com,www.survey.effectory.com","921B187179870BDCBE39A3ECAC17A54E8BB657C7","","18-9-2022 11:57:47","151,90880143479745" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/test-myfeedback.effectory.com","respondent","test-myfeedback.effectory.com","6590D7BE2E46A57A568EFA98E8212F604264D973","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/test-myfeedback.internetspiegel.effectory.com","respondent","test-myfeedback.internetspiegel.effectory.com","F1A9E34F912734D0D7E0FAE51B13ADA7BD4ADA0C","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/test-questionnaire-webapi.effectory.com","respondent","test-questionnaire-webapi.effectory.com","0E994264D6D15EAD24F4AEADB4904BF9D77DACFF","","23-7-2022 23:59:59","95,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/respondent/providers/Microsoft.Web/certificates/test-survey.effectory.com","respondent","test-survey.effectory.com","DC8A67919411C9BE41575E819BFB225399516D0A","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/signin/providers/Microsoft.Web/certificates/788257E4A9B4A54DABB74E049556DA8B7F4BD6A4-SignIn-WestEuropewebspace","signin","SignIn Signing Key","788257E4A9B4A54DABB74E049556DA8B7F4BD6A4","","31-10-2025 23:00:00","1291,3686741199826" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/SignIn/providers/Microsoft.Web/certificates/signin-SignIn-WestEuropewebspace","SignIn","signin.effectory.com,www.signin.effectory.com","5C71C81DB90A5D03BA2CDAD6F3A6564F2626FFED","","18-9-2022 11:58:00","151,9089518977604" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/SignIn/providers/Microsoft.Web/certificates/stage-signin.effectory.com","SignIn","stage-signin.effectory.com","A6BC8A397080379D74ADC7EA0FD6FF28217E27AC","","24-7-2022 23:59:59","96,41032921257523" +"a134faf1-7a89-4f2c-8389-06d00bd5e2a7","/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7/resourceGroups/survey/providers/Microsoft.Web/certificates/64C1385EAA131134CF5A2A4DC78370BB290C3868-respondent-WestEuropewebspace","survey","effectory.nl,effectory.com,www.effectory.com,beste-werkgevers.nl,www.beste-werkgevers.nl,Login.effectory.com,Login.internetspiegel.effectory.com,beste-werkgevers.effectory.nl,Login.effectory.nl,Login.internetspiegel.effectory.nl,www.effectory.nl","64C1385EAA131134CF5A2A4DC78370BB290C3868","","20-5-2021 15:04:40","-333,96141847261" +"5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c","/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c/resourceGroups/testaccept-website/providers/Microsoft.Web/certificates/788257E4A9B4A54DABB74E049556DA8B7F4BD6A4-testaccept-website-WestEuropewebspace","testaccept-website","SignIn Signing Key","788257E4A9B4A54DABB74E049556DA8B7F4BD6A4","","31-10-2025 23:00:00","1291,3686741199826" +"5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c","/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c/resourceGroups/testaccept-website/providers/Microsoft.Web/certificates/accept-customer.effectory.com","testaccept-website","accept-customer.effectory.com","FD00C3C10FDD9E2FF1A5299342BE4583A43B1BBA","","22-7-2022 23:59:59","94,41032921257523" +"5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c","/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c/resourceGroups/testaccept-website/providers/Microsoft.Web/certificates/accept-ecestore.effectory.com","testaccept-website","accept-ecestore.effectory.com","1F483233E164DAF98BEF335625C849A8136823AC","","23-7-2022 23:59:59","95,41032921257523" +"5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c","/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c/resourceGroups/testaccept-website/providers/Microsoft.Web/certificates/accept-internetspiegel.customer.effectory.com","testaccept-website","accept-internetspiegel.customer.effectory.com","4F999DE79FA11671D7ABE82DA4B09BA849241648","","24-7-2022 23:59:59","96,41032921257523" +"5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c","/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c/resourceGroups/testaccept-website/providers/Microsoft.Web/certificates/accept-mailings-webapi.effectory.com","testaccept-website","accept-mailings-webapi.effectory.com","1F35D0E16AAE9C3F94BD8103F9B3EA826EEFD0EB","","24-7-2022 23:59:59","96,41032921257523" +"5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c","/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c/resourceGroups/testaccept-website/providers/Microsoft.Web/certificates/accept-project.effectory.com","testaccept-website","accept-project.effectory.com","CBB1F1F2FD07BF7893FD80E8BBBC107F08913D8E","","22-7-2022 23:59:59","94,41032921257523" +"5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c","/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c/resourceGroups/testaccept-website/providers/Microsoft.Web/certificates/accept-signin.effectory.com","testaccept-website","accept-signin.effectory.com","EB3DD2C634A38FD54563B7EF0B39D045116B829F","","23-7-2022 23:59:59","95,41032921257523" +"5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c","/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c/resourceGroups/testaccept-website/providers/Microsoft.Web/certificates/accept-survey-webapi.effectory.com","testaccept-website","accept-survey-webapi.effectory.com","54B75F9FED71AE195FDBFF55B616E91C77B333D7","","24-7-2022 23:59:59","96,41032921257523" +"5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c","/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c/resourceGroups/testaccept-website/providers/Microsoft.Web/certificates/accept-webapi-webjobs.effectory.com-test-webapi-webjobs(accept)","testaccept-website","accept-webapi-webjobs.effectory.com","CD26DB681452E98E3626DE2715DC1252C717B6DB","","19-6-2022 23:59:59","61,410329212575235" +"5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c","/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c/resourceGroups/testaccept-website/providers/Microsoft.Web/certificates/test-customer.effectory.com","testaccept-website","test-customer.effectory.com","4391CD1E73498A785549B7D3AD1006FE5EE23303","","22-7-2022 23:59:59","94,41032921257523" +"5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c","/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c/resourceGroups/testaccept-website/providers/Microsoft.Web/certificates/test-ecestore.effectory.com","testaccept-website","test-ecestore.effectory.com","8A9F3808BDCAF0E6482A513D4A251207BDCC5BCA","","22-7-2022 23:59:59","94,41032921257523" +"5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c","/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c/resourceGroups/testaccept-website/providers/Microsoft.Web/certificates/test-mailings-webapi.effectory.com","testaccept-website","test-mailings-webapi.effectory.com","B5912EF7D173EC4ED8F84FD61FEEDE27F3B45C7E","","23-7-2022 23:59:59","95,41032921257523" +"5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c","/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c/resourceGroups/testaccept-website/providers/Microsoft.Web/certificates/test-project.effectory.com","testaccept-website","test-project.effectory.com","3EC69AE4E8680CD30CCC4C633FC1321234DCFFC6","","23-7-2022 23:59:59","95,41032921257523" +"5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c","/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c/resourceGroups/testaccept-website/providers/Microsoft.Web/certificates/test-project.internetspiegel.effectory.com","testaccept-website","test-project.internetspiegel.effectory.com","88630FDCFA0065605EDD33EF2969EAF99BBE0F5A","","23-7-2022 23:59:59","95,41032921257523" +"5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c","/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c/resourceGroups/testaccept-website/providers/Microsoft.Web/certificates/test-signin.effectory.com","testaccept-website","test-signin.effectory.com","783577004F1279DC0CE205409C573D28C0551911","","24-7-2022 23:59:59","96,41032921257523" +"5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c","/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c/resourceGroups/testaccept-website/providers/Microsoft.Web/certificates/test-survey-webapi.effectory.com","testaccept-website","test-survey-webapi.effectory.com","D54906A8415491A69D4D9499A1964D28A7C6673D","","23-7-2022 23:59:59","95,41032921257523" +"5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c","/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c/resourceGroups/testaccept-website/providers/Microsoft.Web/certificates/test-webapi-webjobs.effectory.com","testaccept-website","test-webapi-webjobs.effectory.com","03981E35F0127E81963BDD9B75AF69A32582F103","","24-7-2022 23:59:59","96,41032921257523" +"dbbb7e6a-5fd3-4db5-bf73-bc940889c209","/subscriptions/dbbb7e6a-5fd3-4db5-bf73-bc940889c209/resourceGroups/EffectoryCorporate2.0/providers/Microsoft.Web/certificates/200EB19A74BE716162D24FCC8C7854D5172EA3EC-EffectoryCorporate2.0-WestEuropewebspace","EffectoryCorporate2.0","effectory.nl,effectory.com,www.effectory.com,beste-werkgevers.nl,www.beste-werkgevers.nl,login.effectory.com,login.internetspiegel.effectory.com,beste-werkgevers.effectory.nl,login.effectory.nl,login.internetspiegel.effectory.nl,www.effectory.nl","200EB19A74BE716162D24FCC8C7854D5172EA3EC","","19-6-2022 14:05:27","60,997458842204864" +"dbbb7e6a-5fd3-4db5-bf73-bc940889c209","/subscriptions/dbbb7e6a-5fd3-4db5-bf73-bc940889c209/resourceGroups/EffectoryCorporate2.0/providers/Microsoft.Web/certificates/26BDE1E75466B4E4BD78367B7D2E157F4DCBBC59-EffectoryCorporate2.0-WestEuropewebspace","EffectoryCorporate2.0","customeyes.nl,www.customeyesresearch.com,customeyesresearch.com,www.customeyes.nl","26BDE1E75466B4E4BD78367B7D2E157F4DCBBC59","","21-5-2021 14:30:59","-332,98480967631366" +"dbbb7e6a-5fd3-4db5-bf73-bc940889c209","/subscriptions/dbbb7e6a-5fd3-4db5-bf73-bc940889c209/resourceGroups/EffectoryCorporate2.0/providers/Microsoft.Web/certificates/Effectory-de-EffectoryCorporate2.0-WestEuropewebspace","EffectoryCorporate2.0","effectory.de,www.effectory.de","2457D8B3DB65DFE2384643C0C8C578970F2FB35F","","23-9-2022 15:28:41","157,05525976813078" +"eec75831-812e-4b06-a7a4-ec28a5126238","/subscriptions/eec75831-812e-4b06-a7a4-ec28a5126238/resourceGroups/Default/providers/Microsoft.Web/certificates/accept-portal.teamie.nl","Default","accept-portal.teamie.nl","44DB26435D69028DAC8AF61FC65099B8032408B4","","2-9-2022 23:59:59","136,41032921257522" +"eec75831-812e-4b06-a7a4-ec28a5126238","/subscriptions/eec75831-812e-4b06-a7a4-ec28a5126238/resourceGroups/Default/providers/Microsoft.Web/certificates/accept-questionnaire.teamie.nl","Default","accept-questionnaire.teamie.nl","A368DD035DC4B8C49A1870AA9919238A309037C8","","2-9-2022 23:59:59","136,41032921257522" +"eec75831-812e-4b06-a7a4-ec28a5126238","/subscriptions/eec75831-812e-4b06-a7a4-ec28a5126238/resourceGroups/Default/providers/Microsoft.Web/certificates/accept-webapi.teamie.nl","Default","accept-webapi.teamie.nl","E9CB92EF78119A84A4BEBEEBEF20AB3DA89552C4","","1-9-2022 23:59:59","135,41032921257522" +"eec75831-812e-4b06-a7a4-ec28a5126238","/subscriptions/eec75831-812e-4b06-a7a4-ec28a5126238/resourceGroups/Default/providers/Microsoft.Web/certificates/portal.teamie.nl","Default","portal.teamie.nl","D35CC3BA640765091EECED8888E3E4297E2A56AC","","2-9-2022 23:59:59","136,41032921257522" +"eec75831-812e-4b06-a7a4-ec28a5126238","/subscriptions/eec75831-812e-4b06-a7a4-ec28a5126238/resourceGroups/Default/providers/Microsoft.Web/certificates/questionnaire.teamie.nl","Default","questionnaire.teamie.nl","BB238EAFEDB4F7701E7C5FB9240608153C2CA591","","2-9-2022 23:59:59","136,41032921257522" +"eec75831-812e-4b06-a7a4-ec28a5126238","/subscriptions/eec75831-812e-4b06-a7a4-ec28a5126238/resourceGroups/Default/providers/Microsoft.Web/certificates/stage-portal.teamie.nl","Default","stage-portal.teamie.nl","36030570EB7F6D1F6178D3CB7DFE15A9879C2A69","","1-9-2022 23:59:59","135,41032921257522" +"eec75831-812e-4b06-a7a4-ec28a5126238","/subscriptions/eec75831-812e-4b06-a7a4-ec28a5126238/resourceGroups/Default/providers/Microsoft.Web/certificates/stage-questionnaire.teamie.nl","Default","stage-questionnaire.teamie.nl","C0848D611C64D21CEC9737F0C76C7B94923D4365","","2-9-2022 23:59:59","136,41032921257522" +"eec75831-812e-4b06-a7a4-ec28a5126238","/subscriptions/eec75831-812e-4b06-a7a4-ec28a5126238/resourceGroups/Default/providers/Microsoft.Web/certificates/stage-webapi.teamie.nl","Default","stage-webapi.teamie.nl","FE8F39E643B2728430CDB385059944F5FB92C6F2","","2-9-2022 23:59:59","136,41032921257522" +"eec75831-812e-4b06-a7a4-ec28a5126238","/subscriptions/eec75831-812e-4b06-a7a4-ec28a5126238/resourceGroups/Default/providers/Microsoft.Web/certificates/test-portal.teamie.nl","Default","test-portal.teamie.nl","58812E81DDA74622E5307A26D1A5C82CC85093EA","","1-9-2022 23:59:59","135,41032921257522" +"eec75831-812e-4b06-a7a4-ec28a5126238","/subscriptions/eec75831-812e-4b06-a7a4-ec28a5126238/resourceGroups/Default/providers/Microsoft.Web/certificates/test-questionnaire.teamie.nl","Default","test-questionnaire.teamie.nl","2D22C5F1D2E392FAE7634157CF612CB89AB3416C","","2-9-2022 23:59:59","136,41032921257522" +"eec75831-812e-4b06-a7a4-ec28a5126238","/subscriptions/eec75831-812e-4b06-a7a4-ec28a5126238/resourceGroups/Default/providers/Microsoft.Web/certificates/test-webapi.teamie.nl","Default","test-webapi.teamie.nl","CD2672F7AAE06ADBB2D7F84435EC1ABBCA35229C","","2-9-2022 23:59:59","136,41032921257522" +"eec75831-812e-4b06-a7a4-ec28a5126238","/subscriptions/eec75831-812e-4b06-a7a4-ec28a5126238/resourceGroups/Default/providers/Microsoft.Web/certificates/webapi.teamie.nl","Default","webapi.teamie.nl","24BA5DF807F139E1829052554A517A816D2E0631","","1-9-2022 23:59:59","135,41032921257522" diff --git a/ConsoleApps/.gitignore b/ConsoleApps/.gitignore new file mode 100644 index 0000000..1d24046 --- /dev/null +++ b/ConsoleApps/.gitignore @@ -0,0 +1,334 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# Bicep output +Authorization.Deploy/authorization.json + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +#**/Properties/launchSettings.json + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + diff --git a/ConsoleApps/AzureRestApi/AzureRestApi.sln b/ConsoleApps/AzureRestApi/AzureRestApi.sln new file mode 100644 index 0000000..5e1f6a4 --- /dev/null +++ b/ConsoleApps/AzureRestApi/AzureRestApi.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.1.32328.378 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureRestApi", "AzureRestApi\AzureRestApi.csproj", "{DCEBAB23-4E5B-4FBE-9752-EC9C22E5C394}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DCEBAB23-4E5B-4FBE-9752-EC9C22E5C394}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DCEBAB23-4E5B-4FBE-9752-EC9C22E5C394}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DCEBAB23-4E5B-4FBE-9752-EC9C22E5C394}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DCEBAB23-4E5B-4FBE-9752-EC9C22E5C394}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {9F84ED05-3BCF-4BA7-B4ED-FEF688F8A2D0} + EndGlobalSection +EndGlobal diff --git a/ConsoleApps/AzureRestApi/AzureRestApi/AzureRestApi.csproj b/ConsoleApps/AzureRestApi/AzureRestApi/AzureRestApi.csproj new file mode 100644 index 0000000..1e2833c --- /dev/null +++ b/ConsoleApps/AzureRestApi/AzureRestApi/AzureRestApi.csproj @@ -0,0 +1,26 @@ + + + + Exe + net6.0 + enable + enable + + + + + + + + + + + + + + + PreserveNewest + + + + diff --git a/ConsoleApps/AzureRestApi/AzureRestApi/Models/Api/ResourcesResponse.cs b/ConsoleApps/AzureRestApi/AzureRestApi/Models/Api/ResourcesResponse.cs new file mode 100644 index 0000000..a3dac25 --- /dev/null +++ b/ConsoleApps/AzureRestApi/AzureRestApi/Models/Api/ResourcesResponse.cs @@ -0,0 +1,9 @@ +using AzureRestApi.Models.Resources; + +namespace AzureRestApi.Models.Api +{ + public class ResourcesResponse + { + public List? value { get; set; } + } +} diff --git a/ConsoleApps/AzureRestApi/AzureRestApi/Models/Api/SubscriptionResponse.cs b/ConsoleApps/AzureRestApi/AzureRestApi/Models/Api/SubscriptionResponse.cs new file mode 100644 index 0000000..8c4c913 --- /dev/null +++ b/ConsoleApps/AzureRestApi/AzureRestApi/Models/Api/SubscriptionResponse.cs @@ -0,0 +1,9 @@ +using AzureRestApi.Models.Resources; + +namespace AzureRestApi.Models.Api +{ + public class SubscriptionResponse + { + public List? value { get; set; } + } +} diff --git a/ConsoleApps/AzureRestApi/AzureRestApi/Models/Api/TagProperties.cs b/ConsoleApps/AzureRestApi/AzureRestApi/Models/Api/TagProperties.cs new file mode 100644 index 0000000..1d7c37c --- /dev/null +++ b/ConsoleApps/AzureRestApi/AzureRestApi/Models/Api/TagProperties.cs @@ -0,0 +1,9 @@ +using AzureRestApi.Models.Resources; + +namespace AzureRestApi.Models.Api +{ + public class TagProperties + { + public TagTags properties { get; set; } = new TagTags(); + } +} diff --git a/ConsoleApps/AzureRestApi/AzureRestApi/Models/Resources/Resource.cs b/ConsoleApps/AzureRestApi/AzureRestApi/Models/Resources/Resource.cs new file mode 100644 index 0000000..f1d0bd8 --- /dev/null +++ b/ConsoleApps/AzureRestApi/AzureRestApi/Models/Resources/Resource.cs @@ -0,0 +1,28 @@ +namespace AzureRestApi.Models.Resources +{ + public class Resource + { + public string? id { get; set; } + public string? name { get; set; } + public string? type { get; set; } + public string? location { get; set; } + public string? createdTime { get; set; } + public string? changedTime { get; set; } + public Dictionary tags { get; set; } = new Dictionary(); + + public string? CreatedOn + { + get + { + if (string.IsNullOrWhiteSpace(createdTime)) + { + return changedTime; + } + else + { + return createdTime; + } + } + } + } +} diff --git a/ConsoleApps/AzureRestApi/AzureRestApi/Models/Resources/Subscription.cs b/ConsoleApps/AzureRestApi/AzureRestApi/Models/Resources/Subscription.cs new file mode 100644 index 0000000..047f872 --- /dev/null +++ b/ConsoleApps/AzureRestApi/AzureRestApi/Models/Resources/Subscription.cs @@ -0,0 +1,20 @@ +namespace AzureRestApi.Models.Resources +{ + public class Subscription + { + public string? id { get; set; } + public string? authorizationSource { get; set; } + public string? subscriptionId { get; set; } + public string? tenantId { get; set; } + public string? displayName { get; set; } + public string? state { get; set; } + + public bool Enabled + { + get + { + return state == "Enabled"; + } + } + } +} diff --git a/ConsoleApps/AzureRestApi/AzureRestApi/Models/Resources/TagTags.cs b/ConsoleApps/AzureRestApi/AzureRestApi/Models/Resources/TagTags.cs new file mode 100644 index 0000000..dc4eb98 --- /dev/null +++ b/ConsoleApps/AzureRestApi/AzureRestApi/Models/Resources/TagTags.cs @@ -0,0 +1,7 @@ +namespace AzureRestApi.Models.Resources +{ + public class TagTags + { + public Dictionary tags { get; set; } = new Dictionary(); + } +} diff --git a/ConsoleApps/AzureRestApi/AzureRestApi/Models/Settings.cs b/ConsoleApps/AzureRestApi/AzureRestApi/Models/Settings.cs new file mode 100644 index 0000000..c718cc4 --- /dev/null +++ b/ConsoleApps/AzureRestApi/AzureRestApi/Models/Settings.cs @@ -0,0 +1,8 @@ +namespace AzureRestApi.Models +{ + public class Settings + { + public string KeyVaultName { get; set; } + public string AzureTenantId { get; set; } + } +} diff --git a/ConsoleApps/AzureRestApi/AzureRestApi/Program.cs b/ConsoleApps/AzureRestApi/AzureRestApi/Program.cs new file mode 100644 index 0000000..4f10372 --- /dev/null +++ b/ConsoleApps/AzureRestApi/AzureRestApi/Program.cs @@ -0,0 +1,38 @@ +using AzureRestApi.Models; +using AzureRestApi.Repositories; +using AzureRestApi.Services; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; + +namespace AzureRestApi +{ + class Program + { + static Task Main(string[] args) => + CreateHostBuilder(args).Build().RunAsync(); + + static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureServices((builder, services) => + { + IConfiguration config = new ConfigurationBuilder() + .AddJsonFile("appsettings.json") + .AddEnvironmentVariables() + .Build(); + + Settings settings = config.GetRequiredSection("Settings").Get(); + + services.AddSingleton(); + services.AddSingleton(settings); + + services.AddHttpClient(); + services.AddHttpClient(); + services.AddHttpClient(); + + services.AddScoped(); + + services.AddHostedService(); + } ); + } +} \ No newline at end of file diff --git a/ConsoleApps/AzureRestApi/AzureRestApi/Repositories/AccessTokenRepository.cs b/ConsoleApps/AzureRestApi/AzureRestApi/Repositories/AccessTokenRepository.cs new file mode 100644 index 0000000..59b6d6c --- /dev/null +++ b/ConsoleApps/AzureRestApi/AzureRestApi/Repositories/AccessTokenRepository.cs @@ -0,0 +1,40 @@ +using Azure.Identity; +using Azure.Security.KeyVault.Secrets; +using AzureRestApi.Models; +using Microsoft.IdentityModel.Clients.ActiveDirectory; + +namespace AzureRestApi.Repositories +{ + public class AccessTokenRepository + { + private readonly Settings _settings; + private string? _accessToken; + + public AccessTokenRepository(Settings settings) + { + _settings = settings; + } + + public async Task GetAccessToken() + { + if (!string.IsNullOrWhiteSpace(_accessToken)) return _accessToken; + + var keyvaultUri = "https://" + _settings.KeyVaultName + ".vault.azure.net"; + var credential = new DefaultAzureCredential(); + var client = new SecretClient(new Uri(keyvaultUri), credential); + var clientId = (await client.GetSecretAsync("ClientID")).Value.Value; + var clientSecret = (await client.GetSecretAsync("ClientSecret")).Value.Value; + + ClientCredential cc = new(clientId, clientSecret); + var context = new AuthenticationContext("https://login.microsoftonline.com/" + _settings.AzureTenantId); + var result = context.AcquireTokenAsync("https://management.azure.com/", cc); + if (result == null) + { + throw new InvalidOperationException("Failed to obtain the Access token"); + } + _accessToken = result.Result.AccessToken; + + return _accessToken; + } + } +} diff --git a/ConsoleApps/AzureRestApi/AzureRestApi/Repositories/AzureResourceRepository.cs b/ConsoleApps/AzureRestApi/AzureRestApi/Repositories/AzureResourceRepository.cs new file mode 100644 index 0000000..880e8cb --- /dev/null +++ b/ConsoleApps/AzureRestApi/AzureRestApi/Repositories/AzureResourceRepository.cs @@ -0,0 +1,38 @@ +using AzureRestApi.Models.Api; +using AzureRestApi.Models.Resources; +using System.Net.Http.Headers; +using System.Text.Json; + +namespace AzureRestApi.Repositories +{ + public class AzureResourceRepository + { + private readonly HttpClient _httpClient; + private readonly AccessTokenRepository _accessTokenRepository; + + public AzureResourceRepository(HttpClient httpClient, AccessTokenRepository accessTokenRepository) + { + _httpClient = httpClient; + _accessTokenRepository = accessTokenRepository; + } + + public async Task?> GetAllResources(string subscriptionId) + { + // GET https://management.azure.com/subscriptions/{subscriptionId}/resources?$filter={$filter}&$expand={$expand}&$top={$top}&api-version=2021-04-01 + var accessToken = await _accessTokenRepository.GetAccessToken(); + var uri = new Uri("https://management.azure.com/subscriptions/" + subscriptionId + "/resources?$expand=createdTime,changedTime&api-version=2021-04-01"); + + HttpRequestMessage request = new(HttpMethod.Get, uri); + request.Headers.Accept.Clear(); + request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); + request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); + + var response = await _httpClient.SendAsync(request).ConfigureAwait(false); + response.EnsureSuccessStatusCode(); + + var responseString = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + + return JsonSerializer.Deserialize(responseString)?.value; + } + } +} diff --git a/ConsoleApps/AzureRestApi/AzureRestApi/Repositories/AzureSubscriptionRepository.cs b/ConsoleApps/AzureRestApi/AzureRestApi/Repositories/AzureSubscriptionRepository.cs new file mode 100644 index 0000000..c71a758 --- /dev/null +++ b/ConsoleApps/AzureRestApi/AzureRestApi/Repositories/AzureSubscriptionRepository.cs @@ -0,0 +1,39 @@ +using AzureRestApi.Models.Api; +using AzureRestApi.Models.Resources; +using System.Net.Http.Headers; +using System.Text.Json; + +namespace AzureRestApi.Repositories +{ + public class AzureSubscriptionRepository + { + private readonly HttpClient _httpClient; + private readonly AccessTokenRepository _accessTokenRepository; + + public AzureSubscriptionRepository(HttpClient httpClient, AccessTokenRepository accessTokenRepository) + { + _httpClient = httpClient; + _accessTokenRepository = accessTokenRepository; + } + + public async Task?> GetAllSubscriptions() + { + // GET https://management.azure.com/subscriptions?api-version=2020-01-01 + + var accessToken = await _accessTokenRepository.GetAccessToken(); + var uri = new Uri("https://management.azure.com/subscriptions?api-version=2020-01-01"); + + HttpRequestMessage request = new(HttpMethod.Get, uri); + request.Headers.Accept.Clear(); + request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); + request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); + + var response = await _httpClient.SendAsync(request).ConfigureAwait(false); + response.EnsureSuccessStatusCode(); + + var responseString = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + + return JsonSerializer.Deserialize(responseString)?.value; + } + } +} diff --git a/ConsoleApps/AzureRestApi/AzureRestApi/Repositories/AzureTagRepository.cs b/ConsoleApps/AzureRestApi/AzureRestApi/Repositories/AzureTagRepository.cs new file mode 100644 index 0000000..e12eca4 --- /dev/null +++ b/ConsoleApps/AzureRestApi/AzureRestApi/Repositories/AzureTagRepository.cs @@ -0,0 +1,53 @@ +using AzureRestApi.Models.Api; +using Microsoft.Extensions.Logging; +using System.Net.Http.Headers; +using System.Text; +using System.Text.Json; + +namespace AzureRestApi.Repositories +{ + public class AzureTagRepository + { + private readonly HttpClient _httpClient; + private readonly AccessTokenRepository _accessTokenRepository; + private readonly ILogger _logger; + + public AzureTagRepository(HttpClient httpClient, AccessTokenRepository accessTokenRepository, ILogger logger) + { + _httpClient = httpClient; + _accessTokenRepository = accessTokenRepository; + _logger = logger; + } + + public async Task SetTag(string scope, string name, string value) + { + // PUT https://management.azure.com/{scope}/providers/Microsoft.Resources/tags/default?api-version=2021-04-01 + var result = true; + var accessToken = await _accessTokenRepository.GetAccessToken(); + var uri = new Uri("https://management.azure.com/" + scope + "/providers/Microsoft.Resources/tags/default?api-version=2021-04-01"); + + var tagProperties = new TagProperties(); + tagProperties.properties.tags.Add(name, value); + var body = JsonSerializer.Serialize(tagProperties); + + HttpRequestMessage request = new(HttpMethod.Put, uri); + request.Headers.Accept.Clear(); + request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); + request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); + request.Content = new StringContent(body, Encoding.UTF8, "application/json"); + + var response = await _httpClient.SendAsync(request).ConfigureAwait(false); + try + { + response.EnsureSuccessStatusCode(); + await response.Content.ReadAsStringAsync().ConfigureAwait(false); + } + catch + { + result = false; + } + + return result; + } + } +} diff --git a/ConsoleApps/AzureRestApi/AzureRestApi/Services/CreatedOnDateService.cs b/ConsoleApps/AzureRestApi/AzureRestApi/Services/CreatedOnDateService.cs new file mode 100644 index 0000000..44e0689 --- /dev/null +++ b/ConsoleApps/AzureRestApi/AzureRestApi/Services/CreatedOnDateService.cs @@ -0,0 +1,61 @@ +using AzureRestApi.Repositories; + +namespace AzureRestApi.Services +{ + public class CreatedOnDateService + { + private const string TagName = "CreatedOnDate"; + private readonly AzureSubscriptionRepository _azureSubscriptionRepository; + private readonly AzureResourceRepository _azureResourceRepository; + private readonly AzureTagRepository _azureTagRepository; + + public CreatedOnDateService(AzureSubscriptionRepository azureSubscriptionRepository, AzureResourceRepository azureResourceRepository, AzureTagRepository azureTagRepository) + { + _azureSubscriptionRepository = azureSubscriptionRepository; + _azureResourceRepository = azureResourceRepository; + _azureTagRepository = azureTagRepository; + } + + public async Task SetCreatedOnDateTags(bool skipDone = true) + { + var defaultForeGround = Console.ForegroundColor; + Console.WriteLine("=============================================="); + Console.WriteLine("Setting CreatedOnDateTags"); + Console.WriteLine("=============================================="); + + var subscriptions = await _azureSubscriptionRepository.GetAllSubscriptions(); + if (subscriptions == null || !subscriptions.Any()) throw new Exception("No subscriptions found"); + subscriptions = subscriptions.Where(s => s.Enabled && !string.IsNullOrWhiteSpace(s.subscriptionId)).ToList(); + if (!subscriptions.Any()) throw new Exception("No subscriptions found"); + + foreach (var subscription in subscriptions) + { + Console.WriteLine("----------------------------------------------"); + Console.WriteLine(subscription.displayName); + Console.WriteLine("----------------------------------------------"); + + var resources = await _azureResourceRepository.GetAllResources(subscription.subscriptionId); + if (resources == null || !resources.Any()) continue; + resources = resources.Where(r => !string.IsNullOrWhiteSpace(r.CreatedOn) && !string.IsNullOrWhiteSpace(r.id)).ToList(); + + if (skipDone) + { + resources = resources.Where(r => !r.tags.Any(t => t.Key == TagName && !string.IsNullOrWhiteSpace(t.Value))).ToList(); + } + + foreach (var resource in resources) + { + Console.Write(resource.id); + var tagSuccess = await _azureTagRepository.SetTag(resource.id, TagName, resource.CreatedOn); + + Console.ForegroundColor = tagSuccess ? ConsoleColor.DarkGreen : ConsoleColor.Red; + Console.Write(tagSuccess ? " V" : " X"); + Console.ForegroundColor = defaultForeGround; + + Console.WriteLine(); + } + } + Console.WriteLine("=============================================="); + } + } +} diff --git a/ConsoleApps/AzureRestApi/AzureRestApi/Services/OptionService.cs b/ConsoleApps/AzureRestApi/AzureRestApi/Services/OptionService.cs new file mode 100644 index 0000000..7682390 --- /dev/null +++ b/ConsoleApps/AzureRestApi/AzureRestApi/Services/OptionService.cs @@ -0,0 +1,62 @@ +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AzureRestApi.Services +{ + public class OptionService : IHostedService + { + private readonly ILogger _logger; + private readonly CreatedOnDateService _createdOnDateService; + + public OptionService(ILogger logger, CreatedOnDateService createdOnDateService) + { + _logger = logger; + _createdOnDateService = createdOnDateService; + } + + public async Task StartAsync(CancellationToken cancellationToken) + { + int userInput = 0; + bool validatedInput = false; + while (!validatedInput) + { + Console.WriteLine("================================================================"); + Console.WriteLine("Cloud Egineering Console App"); + Console.WriteLine("================================================================"); + Console.WriteLine("-- This couldn't be done with Powershell, so here we are.... "); + Console.WriteLine(); + Console.WriteLine("Select what you want to do:"); + Console.WriteLine("1. Update missing CreatedOnDate tags."); + Console.WriteLine("0. Exit."); + + string? result = Console.ReadLine(); + bool parsed = int.TryParse(result, out userInput); + + validatedInput = (parsed && (new[] { 1, 0 }).Contains(userInput)); + + if (!validatedInput) + { + Console.WriteLine("Please enter a valid choice"); + } + } + + if (userInput == 1) + { + await _createdOnDateService.SetCreatedOnDateTags(true); + } + + Console.WriteLine("Bye."); + } + + public Task StopAsync(CancellationToken cancellationToken) + { + throw new NotImplementedException(); + } + + } +} diff --git a/ConsoleApps/AzureRestApi/AzureRestApi/appsettings.json b/ConsoleApps/AzureRestApi/AzureRestApi/appsettings.json new file mode 100644 index 0000000..94362dc --- /dev/null +++ b/ConsoleApps/AzureRestApi/AzureRestApi/appsettings.json @@ -0,0 +1,13 @@ +{ + "Settings": { + "KeyVaultName": "consoleapp", + "AzureTenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09" + }, + "Logging": { + "LogLevel": { + "Default": "Warning", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "None" + } + } +} \ No newline at end of file diff --git a/ConsoleApps/AzureRestApi/ConsoleApp1/ConsoleApp1.csproj b/ConsoleApps/AzureRestApi/ConsoleApp1/ConsoleApp1.csproj new file mode 100644 index 0000000..c73e0d1 --- /dev/null +++ b/ConsoleApps/AzureRestApi/ConsoleApp1/ConsoleApp1.csproj @@ -0,0 +1,8 @@ + + + + Exe + netcoreapp3.1 + + + diff --git a/ConsoleApps/AzureRestApi/ConsoleApp1/Program.cs b/ConsoleApps/AzureRestApi/ConsoleApp1/Program.cs new file mode 100644 index 0000000..75272b1 --- /dev/null +++ b/ConsoleApps/AzureRestApi/ConsoleApp1/Program.cs @@ -0,0 +1,12 @@ +using System; + +namespace ConsoleApp1 +{ + internal class Program + { + static void Main(string[] args) + { + Console.WriteLine("Hello World!"); + } + } +} diff --git a/ConsoleApps/x.json b/ConsoleApps/x.json new file mode 100644 index 0000000..11fd97e --- /dev/null +++ b/ConsoleApps/x.json @@ -0,0 +1,846 @@ +{ + "value": [ + { + "id": "/subscriptions/0c50e758-0cfb-4d35-9d52-b39ba918ce30", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "0c50e758-0cfb-4d35-9d52-b39ba918ce30", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Team Yellow", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/0e4ba075-f7d9-4f31-860c-3cb8673f1f08", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "0e4ba075-f7d9-4f31-860c-3cb8673f1f08", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Customer Data", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/0ecf52e9-a2b1-4938-b0b1-f7c1878de642", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "0ecf52e9-a2b1-4938-b0b1-f7c1878de642", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "MyEffectory Project", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/0f35097b-19f1-4baf-b548-f31bc71eccea", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "0f35097b-19f1-4baf-b548-f31bc71eccea", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Logit Production", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/14c2354d-45a9-4e0f-98ff-be58cdbcddc7", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "14c2354d-45a9-4e0f-98ff-be58cdbcddc7", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "EffectoryCore", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/14f042a9-182f-4f09-9df7-d9ebf3eb9968", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "14f042a9-182f-4f09-9df7-d9ebf3eb9968", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Professional Subscription (Maria)", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/1ab2120c-947c-40e2-96c7-460d3e9659de", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "1ab2120c-947c-40e2-96c7-460d3e9659de", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Int-Aut Productie", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/1c406a29-e1ad-4be0-849a-9364009af505", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "1c406a29-e1ad-4be0-849a-9364009af505", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Corporate Marketing Campaigns Testing", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDNDevTest_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/2372e452-d101-4fb1-b9ed-664b8cd68e40", + "authorizationSource": "RoleBased", + "managedByTenants": [ + { + "tenantId": "2f4a9838-26b7-47ee-be60-ccc1fdec5953" + } + ], + "subscriptionId": "2372e452-d101-4fb1-b9ed-664b8cd68e40", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Data warehouse production", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/23e654c9-ed9d-424e-b69a-6a0be116a3ce", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "23e654c9-ed9d-424e-b69a-6a0be116a3ce", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Dev/Test Hans", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDNDevTest_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/27bd000b-3dfb-49c5-afba-be437ecb188c", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "27bd000b-3dfb-49c5-afba-be437ecb188c", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Premium met MSDN (Ramon)", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/2c20594a-bb4e-4103-8e3c-017f6ca01431", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "2c20594a-bb4e-4103-8e3c-017f6ca01431", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Participant Invite Import", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/2e7c2d8f-b022-4136-9ea3-81f6daece91b", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "2e7c2d8f-b022-4136-9ea3-81f6daece91b", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Professional Subscription ( Ziyad )", + "state": "Disabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/30ce4e64-4299-4b93-91b8-4c953f63678e", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "30ce4e64-4299-4b93-91b8-4c953f63678e", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Cloud Engineering", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/3190b0fd-4a66-4636-a204-5b9f18be78a6", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "3190b0fd-4a66-4636-a204-5b9f18be78a6", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Authorization", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/31b26889-ee10-480e-be6a-da5d8a58f19f", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "31b26889-ee10-480e-be6a-da5d8a58f19f", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "HR", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/31cb867e-4cb5-47d3-b12a-7692cf746376", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "31cb867e-4cb5-47d3-b12a-7692cf746376", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Orange dev/test", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDNDevTest_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/33fc60b1-a502-44da-acf5-b9fe22b1ea6f", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "33fc60b1-a502-44da-acf5-b9fe22b1ea6f", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Premium met MSDN (Erik AD)", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/4db5ca42-c8f1-4392-a9fc-96937874ef74", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "4db5ca42-c8f1-4392-a9fc-96937874ef74", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Survey Software Shared Infrastructure", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/4f5c19be-141c-411b-bf83-6133298dbe7c", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "4f5c19be-141c-411b-bf83-6133298dbe7c", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Professional Subscription (Erik)", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/511e74de-3ad1-4aa1-bc74-b6b2833a8551", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "511e74de-3ad1-4aa1-bc74-b6b2833a8551", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Enterprise Subscription (Jurjen)", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/54794e27-b714-4346-81bc-05eae7ccb5a5", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "54794e27-b714-4346-81bc-05eae7ccb5a5", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Question Management", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/56378832-ba51-4f4f-99c1-cff97c244e8e", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "56378832-ba51-4f4f-99c1-cff97c244e8e", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Professional Subscription (Reinier)", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c", + "authorizationSource": "RoleBased", + "managedByTenants": [ + { + "tenantId": "2f4a9838-26b7-47ee-be60-ccc1fdec5953" + } + ], + "subscriptionId": "5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Survey Software Testing", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDNDevTest_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/5e1ac47a-0729-4546-b93f-469d92c5ac4a", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "5e1ac47a-0729-4546-b93f-469d92c5ac4a", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Data warehouse dev/test", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDNDevTest_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/5e6326e8-f587-440a-acdc-3bf7ff5be9cf", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "5e6326e8-f587-440a-acdc-3bf7ff5be9cf", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "VS Pro Sub (Ali)", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/602c0bff-e517-4f7c-966b-3664928cbbce", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "602c0bff-e517-4f7c-966b-3664928cbbce", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Professional Subscription (Johannes Ouendag)", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/632010d6-01a6-4b0b-b6ff-9fab7f8a4bcf", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "632010d6-01a6-4b0b-b6ff-9fab7f8a4bcf", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Professional - Mitchell", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/63cc34fe-1aea-4cef-8402-5869c9fff78b", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "63cc34fe-1aea-4cef-8402-5869c9fff78b", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Dynamics CRM", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/63e30762-4d09-4b15-8104-aac48716c7bf", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "63e30762-4d09-4b15-8104-aac48716c7bf", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Professional Subscription (Aris)", + "state": "Disabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/6e2b45e4-5e7b-4628-8827-ec44e23d2f6b", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "6e2b45e4-5e7b-4628-8827-ec44e23d2f6b", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Participant Integration", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/70cae949-5013-4c40-b718-911dbf9b9a80", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "70cae949-5013-4c40-b718-911dbf9b9a80", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Participant Core", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/72474dd4-e94a-4b6e-bb98-3d6cc9884ff4", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "72474dd4-e94a-4b6e-bb98-3d6cc9884ff4", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Professional (Johannes Oenema)", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/750d0421-da63-42fb-9f89-74aeb5dfe05b", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "750d0421-da63-42fb-9f89-74aeb5dfe05b", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Cloud Engineering Dev/Test", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDNDevTest_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/7cc36153-a8a4-4566-86bc-fec178ed176a", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "7cc36153-a8a4-4566-86bc-fec178ed176a", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Hierarchies Dev/Test", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDNDevTest_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/7feeb150-9ee0-4aea-992a-5f3a89d933e6", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "7feeb150-9ee0-4aea-992a-5f3a89d933e6", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Results", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/80eaaecd-37af-4e15-9384-d5729b096740", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "80eaaecd-37af-4e15-9384-d5729b096740", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "EA Logit Testing", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/86945e42-fa5a-4bbc-948f-3f5407f15d3e", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "86945e42-fa5a-4bbc-948f-3f5407f15d3e", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Hierarchies", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/8bc7d396-c37f-4ecd-9041-5c1e0b717ce9", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "8bc7d396-c37f-4ecd-9041-5c1e0b717ce9", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Professional Subscription (Tiago)", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/8c282de4-a7df-458e-b151-e10ca7b49966", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "8c282de4-a7df-458e-b151-e10ca7b49966", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "My Effectory Project settings", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/91dcc05c-adec-43b7-9ec9-495f195f3df5", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "91dcc05c-adec-43b7-9ec9-495f195f3df5", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Professional Subscription", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/976c455b-3922-4c4e-b6d3-fcd19432cac9", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "976c455b-3922-4c4e-b6d3-fcd19432cac9", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Professional (Thimo)", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7", + "authorizationSource": "RoleBased", + "managedByTenants": [ + { + "tenantId": "2f4a9838-26b7-47ee-be60-ccc1fdec5953" + } + ], + "subscriptionId": "a134faf1-7a89-4f2c-8389-06d00bd5e2a7", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Survey Software Production", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/a6230840-431c-4445-b3ec-41400d584eb2", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "a6230840-431c-4445-b3ec-41400d584eb2", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Professional Subscription (Ekaterina)", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/ab77ee05-80f0-4d16-9be3-bc02a5f0455f", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "ab77ee05-80f0-4d16-9be3-bc02a5f0455f", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Int-Aut Testing", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDNDevTest_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/b5676abc-2355-4a1a-8aab-6c7d33dead1a", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "b5676abc-2355-4a1a-8aab-6c7d33dead1a", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Premium met MSDN (Sebas)", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/b9652347-25d1-43ce-aa63-33f2826816d8", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "b9652347-25d1-43ce-aa63-33f2826816d8", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Professional Subscription (Khaled)", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/ba6bde9e-8690-4c49-a3e1-1576c8ca8ab3", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "ba6bde9e-8690-4c49-a3e1-1576c8ca8ab3", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Professional Subscription", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/baed3117-d2f3-4289-977d-6d4429d9e983", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "baed3117-d2f3-4289-977d-6d4429d9e983", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Team Yellow Dev/Test", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDNDevTest_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/c23331b3-60ac-447c-a978-b9572c577bd9", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "c23331b3-60ac-447c-a978-b9572c577bd9", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Professional Subscription ( Reza )", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/cce2448e-a3b1-493d-90a4-034828a005ab", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "cce2448e-a3b1-493d-90a4-034828a005ab", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Betalen naar gebruik", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "PayAsYouGo_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/dbbb7e6a-5fd3-4db5-bf73-bc940889c209", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "dbbb7e6a-5fd3-4db5-bf73-bc940889c209", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Corporate Website", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/e6daa42b-c939-4ef9-b384-c0cec82b7757", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "e6daa42b-c939-4ef9-b384-c0cec82b7757", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Hierarchy Invite Import", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/eec75831-812e-4b06-a7a4-ec28a5126238", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "eec75831-812e-4b06-a7a4-ec28a5126238", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Teamie Production", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/f17df03f-6856-4d4e-b7ce-67d3ccbfad2e", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "f17df03f-6856-4d4e-b7ce-67d3ccbfad2e", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Professional Subscription (Jurjen)", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/f612a7cd-5729-45e3-af34-3385b9eef7f4", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "f612a7cd-5729-45e3-af34-3385b9eef7f4", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Visual Studio Professional - Jimmy", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "MSDN_2014-09-01", + "spendingLimit": "On" + } + }, + { + "id": "/subscriptions/f929a33f-3956-4f73-82d5-9c52f272ff0f", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "f929a33f-3956-4f73-82d5-9c52f272ff0f", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Corporate Marketing Campaigns Production", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/f9ab522b-4895-492d-b8a8-ca6e1f60c2a8", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "f9ab522b-4895-492d-b8a8-ca6e1f60c2a8", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Participant Exchange", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + }, + { + "id": "/subscriptions/fced11a2-8ba7-4596-9ff4-de8b47713c48", + "authorizationSource": "RoleBased", + "managedByTenants": [], + "subscriptionId": "fced11a2-8ba7-4596-9ff4-de8b47713c48", + "tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09", + "displayName": "Result Integration", + "state": "Enabled", + "subscriptionPolicies": { + "locationPlacementId": "Public_2014-09-01", + "quotaId": "EnterpriseAgreement_2014-09-01", + "spendingLimit": "Off" + } + } + ], + "count": { + "type": "Total", + "value": 59 + } +} \ No newline at end of file diff --git a/Policies/PolicyTagCreatedOnDate.json b/Policies/PolicyTagCreatedOnDate.json new file mode 100644 index 0000000..a1ca415 --- /dev/null +++ b/Policies/PolicyTagCreatedOnDate.json @@ -0,0 +1,52 @@ +{ + "properties": { + "displayName": "PolicyTagCreatedOnDate", + "policyType": "Custom", + "mode": "All", + "description": "This policy add created date tags on resources when they don't exist.", + "metadata": { + "category": "Tags", + "createdBy": "c6025a2e-416c-42da-96ef-dd507382793a", + "createdOn": "2022-04-15T15:01:28.525335Z", + "updatedBy": "c6025a2e-416c-42da-96ef-dd507382793a", + "updatedOn": "2022-04-19T08:12:35.0545303Z" + }, + "parameters": {}, + "policyRule": { + "if": { + "allOf": [ + { + "field": "tags['CreatedOnDate']", + "exists": "false" + } + ] + }, + "then": { + "effect": "modify", + "details": { + "roleDefinitionIds": [ + "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c" + ], + "operations": [ + { + "operation": "add", + "field": "tags['CreatedOnDate']", + "value": "[utcNow()]" + } + ] + } + } + } + }, + "id": "/providers/Microsoft.Management/managementGroups/e9792fd7-4044-47e7-a40d-3fba46f1cd09/providers/Microsoft.Authorization/policyDefinitions/7653268b-5004-4576-8946-5fd9d085e470", + "type": "Microsoft.Authorization/policyDefinitions", + "name": "7653268b-5004-4576-8946-5fd9d085e470", + "systemData": { + "createdBy": "jurjen.ladenius@effectory.com", + "createdByType": "User", + "createdAt": "2022-04-15T15:01:28.473525Z", + "lastModifiedBy": "jurjen.ladenius@effectory.com", + "lastModifiedByType": "User", + "lastModifiedAt": "2022-04-19T08:12:35.0142798Z" + } + } \ No newline at end of file diff --git a/Powershell/Tools/RemediateAllSubscriptions.ps1 b/Powershell/Tools/RemediateAllSubscriptions.ps1 new file mode 100644 index 0000000..cf51943 --- /dev/null +++ b/Powershell/Tools/RemediateAllSubscriptions.ps1 @@ -0,0 +1,21 @@ +#Connect-AzAccount + +[string] $myAssignmentId = "/providers/microsoft.management/managementgroups/e9792fd7-4044-47e7-a40d-3fba46f1cd09/providers/microsoft.authorization/policyassignments/cfeb8911ab4246dc8e731735" +[string] $date = Get-Date -Format "yyyy-MM-dd HHmm" +[string] $subscriptionName = "" + +Write-Host "========================================================================================================================================================================" +Write-Host "Remediating." +Write-Host "========================================================================================================================================================================" + +$subscriptions = Get-AzSubscription | Where-Object State -eq "Enabled" + +foreach ($subscription in $subscriptions) +{ + Select-AzSubscription -SubscriptionId $subscription.Id + $subscriptionName = $subscription.Name + Start-AzPolicyRemediation -Name "Remediate $date $subscriptionName" -PolicyAssignmentId $myAssignmentId +} + +Write-Host "========================================================================================================================================================================" +Write-Host "Done."