106 lines
3.5 KiB
Plaintext
Raw Normal View History

Disabling Managed Identities can reduce an organization's ability to protect itself against configuration faults and credentials leaks.
Create rule S6378[terraform] : Disabling Managed Identities for Azure resources is security-sensitive (#569) * clean-up old metadata file * Create rule S6378 * Add first draft * added link to managed service resources list * fix vague title * add metadata tagging * add metadata - sec standards * add owasp ref * add concise var names Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * add concise var names and reduces identity.type Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * Update rules/S6378/description.adoc * add other distinct code sample * add down to earth recos Clear-text credentials || third party systems * add description - clearer on M-Identities stakes * changed remediation cost to 1h * add cleared reco - use system-assigned * fix layout pb * fix metadata 'hour' mistake: 'hour'->'h' * reformulate ask-yourself * fixed potential confusion * applied review suggestions * add highlight * Update rules/S6378/metadata.json * Update rules/S6378/message.adoc Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * Update rules/S6378/metadata.json * Update rules/S6378/ask-yourself.adoc Co-authored-by: Loris Sierra <loris.sierra@sonarsource.com> Co-authored-by: loris-s-sonarsource <loris-s-sonarsource@users.noreply.github.com> Co-authored-by: Loris S <91723853+loris-s-sonarsource@users.noreply.github.com> Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> Co-authored-by: Nils Werner <64034005+nils-werner-sonarsource@users.noreply.github.com>
2021-12-14 09:37:33 +00:00
Authenticating via managed identities to an Azure resource solely relies on an API call with a non-secret token. The process is inner to Azure: secrets used by Azure are not even accessible to end-users.
In typical scenarios without managed identities, the use of credentials can lead to mistakenly leaving them in code bases. In addition, configuration faults may also happen when storing these values or assigning them permissions.
By transparently taking care of the Azure Active Directory authentication, Managed Identities allow getting rid of day-to-day credentials management.
== Ask Yourself Whether
The resource:
* Needs to authenticate to Azure resources that support Azure Active Directory (AAD).
* Uses a different Access Control system that doesn't guarantee the same security controls as AAD, or no Access Control system at all.
There is a risk if you answered yes to all of those questions.
== Recommended Secure Coding Practices
Enable the Managed Identities capabilities of this Azure resource. If supported, use a System-Assigned managed identity, as:
* It cannot be shared across resources.
* Its life cycle is deeply tied to the life cycle of its Azure resource.
* It provides a unique independent identity.
Alternatively, User-Assigned Managed Identities can also be used but don't guarantee the properties listed above.
Create rule S6378[terraform] : Disabling Managed Identities for Azure resources is security-sensitive (#569) * clean-up old metadata file * Create rule S6378 * Add first draft * added link to managed service resources list * fix vague title * add metadata tagging * add metadata - sec standards * add owasp ref * add concise var names Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * add concise var names and reduces identity.type Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * Update rules/S6378/description.adoc * add other distinct code sample * add down to earth recos Clear-text credentials || third party systems * add description - clearer on M-Identities stakes * changed remediation cost to 1h * add cleared reco - use system-assigned * fix layout pb * fix metadata 'hour' mistake: 'hour'->'h' * reformulate ask-yourself * fixed potential confusion * applied review suggestions * add highlight * Update rules/S6378/metadata.json * Update rules/S6378/message.adoc Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * Update rules/S6378/metadata.json * Update rules/S6378/ask-yourself.adoc Co-authored-by: Loris Sierra <loris.sierra@sonarsource.com> Co-authored-by: loris-s-sonarsource <loris-s-sonarsource@users.noreply.github.com> Co-authored-by: Loris S <91723853+loris-s-sonarsource@users.noreply.github.com> Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> Co-authored-by: Nils Werner <64034005+nils-werner-sonarsource@users.noreply.github.com>
2021-12-14 09:37:33 +00:00
== Sensitive Code Example
For Typical identity blocks:
----
resource "azurerm_api_management" "example" { # Sensitive, the identity block is missing
name = "example"
publisher_name = "company"
}
----
For connections between Kusto Clusters and Azure Data Factory:
----
resource "azurerm_data_factory_linked_service_kusto" "example" {
name = "example"
use_managed_identity = false # Sensitive
}
----
== Compliant Solution
For Typical identity blocks:
2022-02-04 17:28:24 +01:00
[source,terraform]
Create rule S6378[terraform] : Disabling Managed Identities for Azure resources is security-sensitive (#569) * clean-up old metadata file * Create rule S6378 * Add first draft * added link to managed service resources list * fix vague title * add metadata tagging * add metadata - sec standards * add owasp ref * add concise var names Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * add concise var names and reduces identity.type Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * Update rules/S6378/description.adoc * add other distinct code sample * add down to earth recos Clear-text credentials || third party systems * add description - clearer on M-Identities stakes * changed remediation cost to 1h * add cleared reco - use system-assigned * fix layout pb * fix metadata 'hour' mistake: 'hour'->'h' * reformulate ask-yourself * fixed potential confusion * applied review suggestions * add highlight * Update rules/S6378/metadata.json * Update rules/S6378/message.adoc Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * Update rules/S6378/metadata.json * Update rules/S6378/ask-yourself.adoc Co-authored-by: Loris Sierra <loris.sierra@sonarsource.com> Co-authored-by: loris-s-sonarsource <loris-s-sonarsource@users.noreply.github.com> Co-authored-by: Loris S <91723853+loris-s-sonarsource@users.noreply.github.com> Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> Co-authored-by: Nils Werner <64034005+nils-werner-sonarsource@users.noreply.github.com>
2021-12-14 09:37:33 +00:00
----
resource "azurerm_api_management" "example" {
name = "example"
publisher_name = "company"
identity {
type = "SystemAssigned"
}
}
----
For connections between Kusto Clusters and Azure Data Factory:
2022-02-04 17:28:24 +01:00
[source,terraform]
Create rule S6378[terraform] : Disabling Managed Identities for Azure resources is security-sensitive (#569) * clean-up old metadata file * Create rule S6378 * Add first draft * added link to managed service resources list * fix vague title * add metadata tagging * add metadata - sec standards * add owasp ref * add concise var names Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * add concise var names and reduces identity.type Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * Update rules/S6378/description.adoc * add other distinct code sample * add down to earth recos Clear-text credentials || third party systems * add description - clearer on M-Identities stakes * changed remediation cost to 1h * add cleared reco - use system-assigned * fix layout pb * fix metadata 'hour' mistake: 'hour'->'h' * reformulate ask-yourself * fixed potential confusion * applied review suggestions * add highlight * Update rules/S6378/metadata.json * Update rules/S6378/message.adoc Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * Update rules/S6378/metadata.json * Update rules/S6378/ask-yourself.adoc Co-authored-by: Loris Sierra <loris.sierra@sonarsource.com> Co-authored-by: loris-s-sonarsource <loris-s-sonarsource@users.noreply.github.com> Co-authored-by: Loris S <91723853+loris-s-sonarsource@users.noreply.github.com> Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> Co-authored-by: Nils Werner <64034005+nils-werner-sonarsource@users.noreply.github.com>
2021-12-14 09:37:33 +00:00
----
resource "azurerm_data_factory_linked_service_kusto" "example" {
name = "example"
use_managed_identity = true
}
----
== See
* https://owasp.org/Top10/A05_2021-Security_Misconfiguration/[OWASP Top 10 2021 Category A05] - Security Misconfiguration
* https://owasp.org/www-project-top-ten/2017/A6_2017-Security_Misconfiguration[OWASP Top 10 2017 Category A06] - Security Misconfiguration
* https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview[Azure AD Documentation - Managed Identities Overview]
* https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/managed-identity-best-practice-recommendations[Azure AD Documentation - Managed Identities Best Practices]
* https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/services-support-managed-identities[Azure AD Documentation - Services that support managed identities]
Create rule S6378[terraform] : Disabling Managed Identities for Azure resources is security-sensitive (#569) * clean-up old metadata file * Create rule S6378 * Add first draft * added link to managed service resources list * fix vague title * add metadata tagging * add metadata - sec standards * add owasp ref * add concise var names Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * add concise var names and reduces identity.type Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * Update rules/S6378/description.adoc * add other distinct code sample * add down to earth recos Clear-text credentials || third party systems * add description - clearer on M-Identities stakes * changed remediation cost to 1h * add cleared reco - use system-assigned * fix layout pb * fix metadata 'hour' mistake: 'hour'->'h' * reformulate ask-yourself * fixed potential confusion * applied review suggestions * add highlight * Update rules/S6378/metadata.json * Update rules/S6378/message.adoc Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * Update rules/S6378/metadata.json * Update rules/S6378/ask-yourself.adoc Co-authored-by: Loris Sierra <loris.sierra@sonarsource.com> Co-authored-by: loris-s-sonarsource <loris-s-sonarsource@users.noreply.github.com> Co-authored-by: Loris S <91723853+loris-s-sonarsource@users.noreply.github.com> Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> Co-authored-by: Nils Werner <64034005+nils-werner-sonarsource@users.noreply.github.com>
2021-12-14 09:37:33 +00:00
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
=== Message
- Omitting the "identity" block disables Azure Managed Identities. Make sure it is safe here.
Only for Azure Data Factory
- Make sure that disabling Azure Managed Identities is safe here.
=== Highlighting
Highlight the resource bloc.
Create rule S6378[terraform] : Disabling Managed Identities for Azure resources is security-sensitive (#569) * clean-up old metadata file * Create rule S6378 * Add first draft * added link to managed service resources list * fix vague title * add metadata tagging * add metadata - sec standards * add owasp ref * add concise var names Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * add concise var names and reduces identity.type Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * Update rules/S6378/description.adoc * add other distinct code sample * add down to earth recos Clear-text credentials || third party systems * add description - clearer on M-Identities stakes * changed remediation cost to 1h * add cleared reco - use system-assigned * fix layout pb * fix metadata 'hour' mistake: 'hour'->'h' * reformulate ask-yourself * fixed potential confusion * applied review suggestions * add highlight * Update rules/S6378/metadata.json * Update rules/S6378/message.adoc Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * Update rules/S6378/metadata.json * Update rules/S6378/ask-yourself.adoc Co-authored-by: Loris Sierra <loris.sierra@sonarsource.com> Co-authored-by: loris-s-sonarsource <loris-s-sonarsource@users.noreply.github.com> Co-authored-by: Loris S <91723853+loris-s-sonarsource@users.noreply.github.com> Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> Co-authored-by: Nils Werner <64034005+nils-werner-sonarsource@users.noreply.github.com>
2021-12-14 09:37:33 +00:00
2022-01-25 18:36:46 +01:00
Create rule S6378[terraform] : Disabling Managed Identities for Azure resources is security-sensitive (#569) * clean-up old metadata file * Create rule S6378 * Add first draft * added link to managed service resources list * fix vague title * add metadata tagging * add metadata - sec standards * add owasp ref * add concise var names Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * add concise var names and reduces identity.type Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * Update rules/S6378/description.adoc * add other distinct code sample * add down to earth recos Clear-text credentials || third party systems * add description - clearer on M-Identities stakes * changed remediation cost to 1h * add cleared reco - use system-assigned * fix layout pb * fix metadata 'hour' mistake: 'hour'->'h' * reformulate ask-yourself * fixed potential confusion * applied review suggestions * add highlight * Update rules/S6378/metadata.json * Update rules/S6378/message.adoc Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> * Update rules/S6378/metadata.json * Update rules/S6378/ask-yourself.adoc Co-authored-by: Loris Sierra <loris.sierra@sonarsource.com> Co-authored-by: loris-s-sonarsource <loris-s-sonarsource@users.noreply.github.com> Co-authored-by: Loris S <91723853+loris-s-sonarsource@users.noreply.github.com> Co-authored-by: Pierre-Loup <49131563+pierre-loup-tristant-sonarsource@users.noreply.github.com> Co-authored-by: Nils Werner <64034005+nils-werner-sonarsource@users.noreply.github.com>
2021-12-14 09:37:33 +00:00
endif::env-github,rspecator-view[]