Framework/Configurations/SVT/AAD/AAD.Application.json
{
"FeatureName": "Application", "Reference": "aka.ms/azsktcp/Application", "IsMaintenanceMode": false, "Controls": [ { "ControlID": "AAD_Application_Remove_Test_Demo_Apps", "Description": "Old test/demo apps should be removed from the tenant", "Id": "App120", "ControlSeverity": "High", "Automated": "Yes", "MethodName": "CheckOldTestDemoApps", "Rationale": "Demo apps are usually short-term projects that do not go through the full engineering process and due diligence required for enterprise apps. As a result, it is important to constantly review and prune demo app entries from the tenant.", "Recommendation": "Refer: TODO", "Tags": [ "SDL", "TCP", "Automated", "AuthZ", "RBAC" ], "Enabled": true }, { "ControlID": "AAD_Application_ReturnURLs_Use_HTTPS", "Description": "All return URLs configured for an application must be HTTPS endpoints", "Id": "App130", "ControlSeverity": "High", "Automated": "Yes", "MethodName": "CheckReturnURLsAreHTTPS", "Rationale": "Return URLs of an application are particularly sensitive because many authentication flows involve posting the token to the returnURL after successful authentication. If such a URL does not use HTTPS, it leads to disclosure of the token on the network in clear text.", "Recommendation": "Refer: TODO", "Tags": [ "SDL", "TCP", "Automated", "AuthZ", "RBAC" ], "Enabled": true }, { "ControlID": "AAD_Application_Review_Orphaned_Apps", "Description": "Do not permit orphaned apps (i.e., apps with no owners) in the tenant", "Id": "App140", "ControlSeverity": "Medium", "Automated": "Yes", "MethodName": "CheckOrphanedApp", "Rationale": "From a governance standpoint, it is important that every application has one or more owners who are responsible for the upkeep of the application's record in the tenant, rotating credentials, etc.", "Recommendation": "Refer: TODO", "Tags": [ "SDL", "TCP", "Automated", "AuthZ", "RBAC" ], "Enabled": true }, { "ControlID": "AAD_Application_Require_FTE_Owner", "Description": "At least one of the owners of an app must be an FTE", "Id": "App150", "ControlSeverity": "Medium", "Automated": "Yes", "MethodName": "CheckAppFTEOwner", "Rationale": "Guest users in a tenant are often transient. Ensuring that at least one FTE owner is accountable for managing the app, rotating credentials, etc. leads to better app governance.", "Recommendation": "Refer: TODO", "Tags": [ "SDL", "TCP", "Automated", "AuthZ", "RBAC" ], "Enabled": true }, { "ControlID": "AAD_Application_Minimize_Resource_Access_Requested", "Description": "Apps should request the least permissions needed to various resources", "Id": "App160", "ControlSeverity": "Medium", "Automated": "No", "MethodName": "TBD-Later", "Rationale": "Ensuring that an app requests only those permissions that it needs to function properly in keeping with the principle of least privilege ensures that in the event of a compromise, the damage can be contained.", "Recommendation": "Refer: TODO", "Tags": [ "SDL", "TCP", "Automated", "AuthZ", "RBAC" ], "Enabled": true }, { "ControlID": "AAD_Application_HomePage_Use_HTTPS", "Description": "The home page URL for an application must be an HTTPS endpoint", "Id": "App170", "ControlSeverity": "High", "Automated": "Yes", "MethodName": "CheckHomePageIsHTTPS", "Rationale": "Using HTTPS ensures that sensitive data is not disclosed during transit and that the application's clients are not spoofed by rogue endpoint posing as the application.", "Recommendation": "Refer: TODO", "Tags": [ "SDL", "TCP", "Automated", "DP" ], "Enabled": true }, { "ControlID": "AAD_Application_LogoutURLs_Use_HTTPS", "Description": "The logout URL configured for an application must be an HTTPS endpoint", "Id": "App180", "ControlSeverity": "High", "Automated": "Yes", "MethodName": "CheckLogoutURLIsHTTPS", "Rationale": "The logout URL for an application is used during authentication flows. Not using an HTTPS URL for this may lead to disclosure of authentication info/tokens.", "Recommendation": "Refer: TODO", "Tags": [ "SDL", "TCP", "Automated", "AuthN", "DP" ], "Enabled": true }, { "ControlID": "AAD_Application_Must_Have_Privacy_Disclosure", "Description": "All enterprise apps must use a privacy disclosure statement", "Id": "App190", "ControlSeverity": "Medium", "Automated": "Yes", "MethodName": "CheckPrivacyDisclosure", "Rationale": "Adding an appropriate and uniform privacy disclosure for all enterprise apps helps users make correct privacy-related choices when deciding to use the applications. This is also a regulatory requirement in most jurisdictions.", "Recommendation": "Refer: TODO", "Tags": [ "SDL", "TCP", "Automated", "Privacy" ], "Enabled": true }, { "ControlID": "AAD_Application_Must_Restrict_To_Tenant", "Description": "Enterprise (line of business) apps should be tenant scope only", "Id": "App200", "ControlSeverity": "High", "Automated": "Yes", "MethodName": "CheckAppIsCurrentTenantOnly", "Rationale": "Line of business (LOB) applications are usually written to meet a specific company's business needs. Such applications should be restricted to the current tenant only (i.e., the tenant where they are registered).", "Recommendation": "Refer: TODO", "Tags": [ "SDL", "TCP", "Automated" ], "Enabled": true } ] } |