-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature]: Storage State Encryption #492
Comments
Key elements:
|
Refined choices for local machine encryption with Windows Data Protection API (DPAPI) and ASPNET Data Protection. Key differences:
|
8 tasks
Added Pull request #500 to for local encryption using Current User. Will create second PR for dataverse based encryption that will allow saved state to be used across machines |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Is your feature request related to a problem? Please describe.
How can the state.json which can contain browser cookies, be encrypted, to ensure that:
Describe the solution you'd like
To address this problem, we could consider a combination of AES (Advanced Encryption Standard) for encrypting the state.json content and RSA (Rivest-Shamir-Adleman) for encrypting the AES key. This goal to ensure robust security and allows for secure sharing of encrypted files across authorized users or application users.
Provide the ability to use Windows Data Protection (DPAPI) for Windows only local machine protection
Certificate Public/Private key encryption combined with AES
Summary
Primer on AES and RSA Encryption
AES (Advanced Encryption Standard):
Type: Symmetric encryption algorithm.
Key Concept: Uses the same key for both encryption and decryption.
Strengths: Fast and efficient, suitable for encrypting large amounts of data.
Usage: Commonly used for securing data at rest and in transit.
How It Protects: Encrypts data into an unreadable format that can only be decrypted with the same key, ensuring data confidentiality.
RSA (Rivest-Shamir-Adleman):
Type: Asymmetric encryption algorithm.
Key Concept: Uses a pair of keys – a public key for encryption and a private key for decryption.
Strengths: Secure key exchange, suitable for encrypting small amounts of data like encryption keys.
Usage: Often used for securing data transmission and digital signatures.
How It Protects: Encrypts data with a public key that can only be decrypted with the corresponding private key, ensuring secure key exchange and data integrity.
Possible Approach
Encrypting state.json Content with Windows Data protection API (DPAPI)
Encrypt data with Microsoft ASPNET Data Protection Packages that use private key and AES encryption
Storing and Managing Keys in Dataverse:
Key Rotation and Audit Logging:
Sharing Encrypted Files
Authorized Users: Ensure that users involved in the development and CI/CD process have the necessary roles to access the encrypted AES keys and RSA private key.
Application Users: Configure application users with appropriate permissions to access and decrypt the state.json content during automated processes.
Technical Approach
Possible technical approach with Audit Enabled tables using direct Encryption libraries or ASP.NET Core Data Protection described below
Dataverse Table Schema
Test Engine Keys Table:
Columns:
Test Engine Key Data Table:
Columns:
Dataverse Record-Level Security and Column-Level Security
Record-Level Security
Dataverse allows you to control access to individual records based on user roles and permissions. This ensures that only authorized users can access specific records.
Key Concepts:
- Security Roles: Define a set of privileges that determine what actions users can perform on different types of records.
- Business Units: Segment data and users into business units, providing additional layers of security.
- Record Ownership: Records can be owned by users or teams, and the owner has full control over the record.
- Access Levels: Privileges can be set at different levels (User, Business Unit, Parent: Child Business Unit, Organization).
Describe alternatives you've considered
Alternative Solution: Windows Data Protection API (DAPI)
As Microsoft Learn How to: Use Data Protection states
This implementation which would be Microsoft Windows centric could provide default level of protection to state.json files. Given the encryption is tied to the user account and machine the state.json file would only be able to be decrypted on the machine.
Alternative Solution: ASP.NET Core Data Protection
ASP.NET Core security topics gives and overview of multi machine method to encrypt sensitive information.
How It Works
This could be combined with Dataverse based solution of a console application to read and save values for a set of secure keys. Key names would need to be unique to specific set of tests for a user context.
Possible code to query and store encrypted values
Optionally query certificate from Windows Store
Possible code to query and store encryption key values encrypted via DAPI or public key of certificate
Class to query encrypted value from Dataverse
Alternative Solution: Managed Information Protection (MIP)
Overview: Managed Information Protection (MIP) is a comprehensive data protection solution integrated with Microsoft 365. It provides advanced capabilities for data classification, labeling, and protection across various Microsoft 365 services.
Key Features
Pros
Comprehensive Protection: MIP offers a unified solution for data protection, covering classification, labeling, and encryption.
User-Friendly: The labeling and classification features are intuitive, making it easy for users to apply protection to documents and emails.
Policy Management: Centralized management of data protection policies ensures consistent enforcement across the organization.
Notes
Additional context?
No response
The text was updated successfully, but these errors were encountered: