formatted nav patterns
This commit is contained in:
parent
38a19d75d8
commit
2fad891a77
59 changed files with 1403 additions and 1970 deletions
|
|
@ -4,25 +4,15 @@ weight = 120
|
|||
+++
|
||||
_By Bogdana Botez at Microsoft Development Center Copenhagen_
|
||||
|
||||
_
|
||||
_
|
||||
|
||||
[![ ][image0]][anchor0]
|
||||
|
||||
**
|
||||
**
|
||||
**Aliases:** Encapsulation, Separation of Concerns [1]
|
||||
|
||||
**Aliases:** Encapsulation, Separation of Concerns \[1\]
|
||||
|
||||
**
|
||||
**
|
||||
|
||||
**Context**: You want to store and protect sensitive data which already exists in a system, but it is not clear which data needs protection and how to store it.
|
||||
|
||||
**Problem**: Sensitive data is scattered and mixed with other data in various parts of the system (passwords residing in the same table with non-sensitive data, part of the private information might be stored in files, hardcoded text constants, hardcoded info as part of the code etc.).
|
||||
|
||||
****
|
||||
|
||||
**Forces:**
|
||||
|
||||
* **Obscurity:** sensitive data mixed with other data and code makes it hard to have an overview of what needs to be protected.
|
||||
|
|
@ -44,9 +34,6 @@ Figure 1 describes the definition of a table which is already available in Dynam
|
|||
|
||||
_Figure 1- Example definition, table used for **Sensitive** **Data** **Encapsulation**_
|
||||
|
||||
**
|
||||
**
|
||||
|
||||
Let's use a software system (which can be a Dynamics NAV extension or customization). Chances are that the system will look similar to the one described in part 1 of Figure 2: there is data handled in various places of the system, on various storage solutions. Intertwined with normal data, there is sensitive data. For example: Dynamics CRM (Customer Relationship Management) connection information could be all stored in one table, and consists of the connection URI (normal data), enabled/disabled status (normal data), and connection password (sensitive data).
|
||||
|
||||
Figure 2 illustrates the system before and after applying the **Sensitive Data Encapsulation** pattern.
|
||||
|
|
@ -64,13 +51,11 @@ Furthermore, actors which have to interact with the data, need to remember where
|
|||
|
||||
_Figure 2 - Data access before and after **Sensitive** **Data** **Encapsulation.**_
|
||||
|
||||
.
|
||||
|
||||
**Benefits:**
|
||||
|
||||
* **Clarity:** when all sensitive data is encapsulated in one place, it is clear which is the information that needs to be protected.
|
||||
* **Simplicity:** easier to protect just a limited number of known resources when they are grouped.
|
||||
* **Homogeneity: **the same protection can be applied to all data, since it is stored in the same place.
|
||||
* **Homogeneity:** the same protection can be applied to all data, since it is stored in the same place.
|
||||
* **Separation of concerns:** treat each section of the computer program differently, by separating it and clearly addressing its own requirements and limitations. \[1\]
|
||||
* **Performance**: data protection techniques like **Access Control** and **Encryption** can now be applied only to the sensitive data (not to everything), which improves the performance of the system.
|
||||
|
||||
|
|
@ -82,59 +67,35 @@ _Figure 2 - Data access before and after **Sensitive** **Data** **Encapsulation.
|
|||
|
||||
**References**
|
||||
|
||||
\[1\]
|
||||
\[1\] "Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Separation_of_concerns.
|
||||
|
||||
"Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Separation\_of\_concerns.
|
||||
\[2\] "GUID Structure," \[Online\]. Available: https://msdn.microsoft.com/en-us/library/aa373931(VS.85).aspx.
|
||||
|
||||
\[2\]
|
||||
\[3\] "Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Binary_large_object.
|
||||
|
||||
"GUID Structure," \[Online\]. Available: https://msdn.microsoft.com/en-us/library/aa373931(VS.85).aspx.
|
||||
\[4\] waldo, "How Do I: Manage Companies in Microsoft Dynamics NAV 2013 R2".
|
||||
|
||||
\[3\]
|
||||
\[5\] Microsoft, "Multitenant Deployment Architecture," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/dn271675(v=nav.90).aspx.
|
||||
|
||||
"Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Binary\_large\_object.
|
||||
\[6\] B. Botez, "Setup Table design pattern," Microsoft, 2013\. \[Online\]. Available: https://community.dynamics.com/nav/w/designpatterns/76.setup-table. \[Accessed 31 07 2016\].
|
||||
|
||||
\[4\]
|
||||
\[7\] "Shotgun Surgery," \[Online\]. Available: https://en.wikipedia.org/wiki/Shotgun_surgery. \[Accessed 31 07 2016\].
|
||||
|
||||
waldo, "How Do I: Manage Companies in Microsoft Dynamics NAV 2013 R2".
|
||||
\[8\] M. Fowler, Refactoring: Improving the design of existing code, Addison Wesley, 1999\.
|
||||
|
||||
\[5\]
|
||||
\[9\] "Masking out," \[Online\]. Available: https://en.wikipedia.org/wiki/Data_masking#Masking_out. \[Accessed 29 7 2016\].
|
||||
|
||||
Microsoft, "Multitenant Deployment Architecture," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/dn271675(v=nav.90).aspx.
|
||||
\[10\] "Key Vault," Microsoft, \[Online\]. Available: https://azure.microsoft.com/en-us/services/key-vault/.
|
||||
|
||||
\[6\]
|
||||
\[11\] "How to: Configure SSL to Secure the Connection to Microsoft Dynamics NAV Web Client," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/hh167264(v=nav.90).aspx. \[Accessed 2 8 2016\].
|
||||
|
||||
B. Botez, "Setup Table design pattern," Microsoft, 2013\. \[Online\]. Available: https://community.dynamics.com/nav/w/designpatterns/76.setup-table. \[Accessed 31 07 2016\].
|
||||
|
||||
\[7\]
|
||||
|
||||
"Shotgun Surgery," \[Online\]. Available: https://en.wikipedia.org/wiki/Shotgun\_surgery. \[Accessed 31 07 2016\].
|
||||
|
||||
\[8\]
|
||||
|
||||
M. Fowler, Refactoring: Improving the design of existing code, Addison Wesley, 1999\.
|
||||
|
||||
\[9\]
|
||||
|
||||
"Masking out," \[Online\]. Available: https://en.wikipedia.org/wiki/Data\_masking\#Masking\_out. \[Accessed 29 7 2016\].
|
||||
|
||||
\[10\]
|
||||
|
||||
"Key Vault," Microsoft, \[Online\]. Available: https://azure.microsoft.com/en-us/services/key-vault/.
|
||||
|
||||
\[11\]
|
||||
|
||||
"How to: Configure SSL to Secure the Connection to Microsoft Dynamics NAV Web Client," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/hh167264(v=nav.90).aspx. \[Accessed 2 8 2016\].
|
||||
|
||||
\[12\]
|
||||
|
||||
"sniffer," \[Online\]. Available: http://compnetworking.about.com/od/networksecurityprivacy/g/bldef\_sniffer.htm. \[Accessed 02 08 2016\].
|
||||
\[12\] "sniffer," \[Online\]. Available: http://compnetworking.about.com/od/networksecurityprivacy/g/bldef_sniffer.htm. \[Accessed 02 08 2016\].
|
||||
|
||||
|
||||
|
||||
[anchor0]: Logo-_2D00_-Protected-Data-Encapsulation.png
|
||||
[anchor1]: /nav/w/designpatterns/277.3-single-point-of-acces
|
||||
[anchor2]: /nav/w/designpatterns/276.2-data-encryption
|
||||
[anchor1]: /navpatterns/1-patterns/security/3-single-point-of-access/
|
||||
[anchor2]: /navpatterns/1-patterns/security/2-data-encryption/
|
||||
[anchor3]: Data-Encapsulation-_2D00_-figure-1.png
|
||||
[anchor4]: Multi-_2D00_-1-2.JPG
|
||||
|
||||
|
|
|
|||
|
|
@ -4,20 +4,12 @@ weight = 140
|
|||
+++
|
||||
_By Bogdana Botez at Microsoft Development Center Copenhagen_
|
||||
|
||||
__
|
||||
|
||||
_[![ ][image0]][anchor0]
|
||||
_
|
||||
|
||||
****
|
||||
[![ ][image0]][anchor0]
|
||||
|
||||
**Context**: After applying [**Sensitive Data Encapsulation**][anchor1], all sensitive data is gathered in a known place in the database. This makes it possible to apply further protection best practices.
|
||||
|
||||
**Problem**: If any non-authorized actor manages to get access to a copy of the database, the sensitive data is immediately available in clear-text.
|
||||
|
||||
**
|
||||
**
|
||||
|
||||
**Forces:**
|
||||
|
||||
* **Accessibility:** anyone who managed to steal a copy of the database can at once read the sensitive information.
|
||||
|
|
@ -30,59 +22,23 @@ Figure 1 adds one more step (in continuation of the figure in pattern **[Sensiti
|
|||
|
||||
_Figure 1- **Encryption** becomes easier after first applying [**Sensitive Data Encapsulation**][anchor1]._
|
||||
|
||||
****
|
||||
|
||||
**Usage**: in Dynamics NAV, codeunit 1266 Encryption Management offers an API for encryption of data. The available functionality is described in Table 1\.
|
||||
|
||||
Table 1- Encryption functionality in Dynamics NAV (found in codeunit 1266 Encryption Management)
|
||||
|
||||
**Procedure**
|
||||
|
||||
**Description**
|
||||
|
||||
**EnableEncryption**
|
||||
|
||||
Confirms with the user before enabling encryption in all companies of the current database.
|
||||
|
||||
**EnableEncryptionSilently**
|
||||
|
||||
Enables encryption without UI interaction (to be used for web services).
|
||||
|
||||
**DisableEncryption**
|
||||
|
||||
Disables encryption. Has a boolean "Silent" parameter which enables/disables UI interaction.
|
||||
|
||||
**Encrypt**
|
||||
|
||||
Checks that encryption is possible before encrypting the given text.
|
||||
|
||||
**Decrypt**
|
||||
|
||||
Checks that encryption is possible before decrypting the given text.
|
||||
|
||||
**ExportKey**
|
||||
|
||||
If encryption is possible, it shows a confirmation dialog to confirm the export of the encryption key, and proceeds to saving it to a location chosen by the user.
|
||||
|
||||
**ImportKey**
|
||||
|
||||
Imports the encryption key from a user chosen location.
|
||||
|
||||
**ChangeKey**
|
||||
|
||||
Changes the encryption key.
|
||||
|
||||
**IsEncryptionEnabled**
|
||||
|
||||
Returns TRUE is encryption is enabled.
|
||||
|
||||
**IsEncryptionPossible**
|
||||
|
||||
Check is the correct key is present, which only works if encryption is enabled.
|
||||
|
||||
**DeleteEncryptedDataInAllCompanies**
|
||||
|
||||
Confirms through UI and if the user agrees, deletes all data stored in the Service Password table for all companies in the current database. At the end, it deletes the encryption key.
|
||||
Procedure | Description
|
||||
----------|------------
|
||||
EnableEncryption | Confirms with the user before enabling encryption in all companies of the current database.
|
||||
EnableEncryptionSilently | Enables encryption without UI interaction (to be used for web services).
|
||||
DisableEncryption | Disables encryption. Has a boolean "Silent" parameter which enables/disables UI interaction.
|
||||
Encrypt | Checks that encryption is possible before encrypting the given text.
|
||||
Decrypt | Checks that encryption is possible before decrypting the given text.
|
||||
ExportKey | If encryption is possible, it shows a confirmation dialog to confirm the export of the encryption key, and proceeds to saving it to a location chosen by the user.
|
||||
ImportKey | Imports the encryption key from a user chosen location.
|
||||
ChangeKey | Changes the encryption key.
|
||||
IsEncryptionEnabled | Returns TRUE is encryption is enabled.
|
||||
IsEncryptionPossible | Check is the correct key is present, which only works if encryption is enabled.
|
||||
DeleteEncryptedDataInAllCompanies | Confirms through UI and if the user agrees, deletes all data stored in the Service Password table for all companies in the current database. At the end, it deletes the encryption key.
|
||||
|
||||
**User confirmation of encryption**
|
||||
|
||||
|
|
@ -92,19 +48,16 @@ However, in some versions of Dynamics NAV, there are places where any user who h
|
|||
|
||||
To ask the security administrator if they want to enable encryption, plug the code below into the OnValidate trigger of the data field which is to be encrypted. This trigger will then get executed each time there's a change on the password field. For example, if the user is entering a password, then add a call to this procedure to Password -- OnValidate() trigger:
|
||||
|
||||
```al
|
||||
EncryptionIsNotActivatedQst@1001 : TextConst 'ENU=Data encryption is not activated. It is recommended that you encrypt data. \\Do you want to open the Data Encryption Management window?';
|
||||
|
||||
LOCAL PROCEDURE CheckEncryption@6();
|
||||
|
||||
BEGIN
|
||||
|
||||
IF NOT ENCRYPTIONENABLED THEN
|
||||
|
||||
IF CONFIRM(EncryptionIsNotActivatedQst) THEN
|
||||
|
||||
PAGE.RUN(PAGE::"Data Encryption Management");
|
||||
|
||||
IF NOT ENCRYPTIONENABLED THEN
|
||||
IF CONFIRM(EncryptionIsNotActivatedQst) THEN
|
||||
PAGE.RUN(PAGE::"Data Encryption Management");
|
||||
END;
|
||||
```
|
||||
|
||||
The code above will guide the user on encrypting, storing the encryption key and choosing a safe password, as follows. Consider for example that NAV is used by a small business, where Stan is the business owner. Hence, Stan has access to all NAV setup and security decisions. Stan wants to enable a connection between NAV and CRM. In NAV, he opens page CRM Connection Setup and enters the URL, user name and password for CRM (Figure 10). When Stan leaves the password field, if data encryption is not enabled, then he sees the confirmation message in Figure 2\.
|
||||
|
||||
|
|
@ -157,66 +110,42 @@ In the end, Stan chooses a location for the encryption key on disk, in a standar
|
|||
|
||||
**References**
|
||||
|
||||
\[1\]
|
||||
\[1\] "Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Separation_of_concerns.
|
||||
|
||||
"Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Separation\_of\_concerns.
|
||||
\[2\] "GUID Structure," \[Online\]. Available: https://msdn.microsoft.com/en-us/library/aa373931(VS.85).aspx.
|
||||
|
||||
\[2\]
|
||||
\[3\] "Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Binary_large_object.
|
||||
|
||||
"GUID Structure," \[Online\]. Available: https://msdn.microsoft.com/en-us/library/aa373931(VS.85).aspx.
|
||||
\[4\] waldo, "How Do I: Manage Companies in Microsoft Dynamics NAV 2013 R2".
|
||||
|
||||
\[3\]
|
||||
\[5\] Microsoft, "Multitenant Deployment Architecture," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/dn271675(v=nav.90).aspx.
|
||||
|
||||
"Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Binary\_large\_object.
|
||||
\[6\] B. Botez, "Setup Table design pattern," Microsoft, 2013\. \[Online\]. Available: https://community.dynamics.com/nav/w/designpatterns/76.setup-table. \[Accessed 31 07 2016\].
|
||||
|
||||
\[4\]
|
||||
\[7\] "Shotgun Surgery," \[Online\]. Available: https://en.wikipedia.org/wiki/Shotgun_surgery. \[Accessed 31 07 2016\].
|
||||
|
||||
waldo, "How Do I: Manage Companies in Microsoft Dynamics NAV 2013 R2".
|
||||
\[8\] M. Fowler, Refactoring: Improving the design of existing code, Addison Wesley, 1999\.
|
||||
|
||||
\[5\]
|
||||
\[9\] "Masking out," \[Online\]. Available: https://en.wikipedia.org/wiki/Data_masking#Masking_out. \[Accessed 29 7 2016\].
|
||||
|
||||
Microsoft, "Multitenant Deployment Architecture," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/dn271675(v=nav.90).aspx.
|
||||
\[10\] "Key Vault," Microsoft, \[Online\]. Available: https://azure.microsoft.com/en-us/services/key-vault/.
|
||||
|
||||
\[6\]
|
||||
\[11\] "How to: Configure SSL to Secure the Connection to Microsoft Dynamics NAV Web Client," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/hh167264(v=nav.90).aspx. \[Accessed 2 8 2016\].
|
||||
|
||||
B. Botez, "Setup Table design pattern," Microsoft, 2013\. \[Online\]. Available: https://community.dynamics.com/nav/w/designpatterns/76.setup-table. \[Accessed 31 07 2016\].
|
||||
|
||||
\[7\]
|
||||
|
||||
"Shotgun Surgery," \[Online\]. Available: https://en.wikipedia.org/wiki/Shotgun\_surgery. \[Accessed 31 07 2016\].
|
||||
|
||||
\[8\]
|
||||
|
||||
M. Fowler, Refactoring: Improving the design of existing code, Addison Wesley, 1999\.
|
||||
|
||||
\[9\]
|
||||
|
||||
"Masking out," \[Online\]. Available: https://en.wikipedia.org/wiki/Data\_masking\#Masking\_out. \[Accessed 29 7 2016\].
|
||||
|
||||
\[10\]
|
||||
|
||||
"Key Vault," Microsoft, \[Online\]. Available: https://azure.microsoft.com/en-us/services/key-vault/.
|
||||
|
||||
\[11\]
|
||||
|
||||
"How to: Configure SSL to Secure the Connection to Microsoft Dynamics NAV Web Client," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/hh167264(v=nav.90).aspx. \[Accessed 2 8 2016\].
|
||||
|
||||
\[12\]
|
||||
|
||||
"sniffer," \[Online\]. Available: http://compnetworking.about.com/od/networksecurityprivacy/g/bldef\_sniffer.htm. \[Accessed 02 08 2016\].
|
||||
\[12\] "sniffer," \[Online\]. Available: http://compnetworking.about.com/od/networksecurityprivacy/g/bldef_sniffer.htm. \[Accessed 02 08 2016\].
|
||||
|
||||
|
||||
|
||||
[anchor0]: Logo-_2D00_-Encryption.png
|
||||
[anchor1]: /nav/w/designpatterns/275.1-sensitive-data-encapsulation
|
||||
[anchor2]: /nav/w/designpatterns/275.sensitive-data-encapsulation
|
||||
[anchor1]: /navpatterns/1-patterns/security/1-sensitive-data-encapsulation/
|
||||
[anchor2]: /navpatterns/1-patterns/security/1-sensitive-data-encapsulation/
|
||||
[anchor3]: Multi-_2D00_-1-2-3.JPG
|
||||
[anchor4]: Encryption-_2D00_-1.JPG
|
||||
[anchor5]: Encryption-_2D00_-2.png
|
||||
[anchor6]: Encryption-_2D00_-3.png
|
||||
[anchor7]: Encryption-_2D00_-4.png
|
||||
[anchor8]: Encryption-_2D00_-5.png
|
||||
[anchor9]: /nav/w/designpatterns/277.3-single-point-of-acces
|
||||
[anchor9]: /navpatterns/1-patterns/security/3-single-point-of-access/
|
||||
|
||||
|
||||
[image0]: Logo-_2D00_-Encryption.png
|
||||
|
|
|
|||
|
|
@ -4,17 +4,12 @@ weight = 160
|
|||
+++
|
||||
_By Bogdana Botez at Microsoft Development Center Copenhagen_
|
||||
|
||||
_[![ ][image0]][anchor0]
|
||||
_
|
||||
|
||||
__
|
||||
[![ ][image0]][anchor0]
|
||||
|
||||
**Context**: Protected data needs to be used. There are many types of entities which might attempt to use the data.
|
||||
|
||||
**Problem**: If no standard way of accessing data exists, then each entity might attempt to build its own system for handing the sensitive data. The data access layer might be implemented over and over again by each entity, without reuse of known best practices and with a lot of code duplication.
|
||||
|
||||
****
|
||||
|
||||
**Forces:**
|
||||
|
||||
* **Code duplication:** if each entity attempts to write its own routines for data access, invariably this will bring duplication.
|
||||
|
|
@ -25,7 +20,7 @@ __
|
|||
|
||||
**Solution:** In Dynamics NAV the same library which offers [**Encryption**][anchor1], is also intended to be used as a **Single Point of Access**. Write code to create, read and remove sensitive data only through codeunit 1266 Encryption Management, and never directly.
|
||||
|
||||
In Figure 9 (figure numbering is continued from pattern **[Encryption][anchor2]**), the panels 1, 2 and 3 have applied the [**Sensitive Data Encapsulation**][anchor3] and [**Encryption** ][anchor1]patterns. Once data is encapsulated, no matter if it has been encrypted or not, the next pattern, **Single Point of Access**, becomes available as seen in the panels 2 and 3 of Figure 1\.
|
||||
In Figure 9 (figure numbering is continued from pattern **[Encryption][anchor2]**), the panels 1, 2 and 3 have applied the [**Sensitive Data Encapsulation**][anchor3] and [**Encryption**][anchor1] patterns. Once data is encapsulated, no matter if it has been encrypted or not, the next pattern, **Single Point of Access**, becomes available as seen in the panels 2 and 3 of Figure 1\.
|
||||
|
||||
You can observe that, in panel 3, each usage needs to access separately the encrypted data. This means that each usage needs to implement again the encryption capabilities. This is resolved in panel 4, where all users access one common API which encrypts, hence the workload of encryption is moved from the usages, to the API, and needs to be implemented only once.
|
||||
|
||||
|
|
@ -51,60 +46,36 @@ This shows how pattern application is an iterative process, where one step follo
|
|||
|
||||
**References**
|
||||
|
||||
\[1\]
|
||||
\[1\] "Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Separation\_of\_concerns.
|
||||
|
||||
"Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Separation\_of\_concerns.
|
||||
\[2\] "GUID Structure," \[Online\]. Available: https://msdn.microsoft.com/en-us/library/aa373931(VS.85).aspx.
|
||||
|
||||
\[2\]
|
||||
\[3\] "Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Binary\_large\_object.
|
||||
|
||||
"GUID Structure," \[Online\]. Available: https://msdn.microsoft.com/en-us/library/aa373931(VS.85).aspx.
|
||||
\[4\] waldo, "How Do I: Manage Companies in Microsoft Dynamics NAV 2013 R2".
|
||||
|
||||
\[3\]
|
||||
\[5\] Microsoft, "Multitenant Deployment Architecture," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/dn271675(v=nav.90).aspx.
|
||||
|
||||
"Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Binary\_large\_object.
|
||||
\[6\] B. Botez, "Setup Table design pattern," Microsoft, 2013\. \[Online\]. Available: https://community.dynamics.com/nav/w/designpatterns/76.setup-table. \[Accessed 31 07 2016\].
|
||||
|
||||
\[4\]
|
||||
\[7\] "Shotgun Surgery," \[Online\]. Available: https://en.wikipedia.org/wiki/Shotgun\_surgery. \[Accessed 31 07 2016\].
|
||||
|
||||
waldo, "How Do I: Manage Companies in Microsoft Dynamics NAV 2013 R2".
|
||||
\[8\] M. Fowler, Refactoring: Improving the design of existing code, Addison Wesley, 1999\.
|
||||
|
||||
\[5\]
|
||||
\[9\] "Masking out," \[Online\]. Available: https://en.wikipedia.org/wiki/Data\_masking\#Masking\_out. \[Accessed 29 7 2016\].
|
||||
|
||||
Microsoft, "Multitenant Deployment Architecture," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/dn271675(v=nav.90).aspx.
|
||||
\[10\] "Key Vault," Microsoft, \[Online\]. Available: https://azure.microsoft.com/en-us/services/key-vault/.
|
||||
|
||||
\[6\]
|
||||
\[11\] "How to: Configure SSL to Secure the Connection to Microsoft Dynamics NAV Web Client," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/hh167264(v=nav.90).aspx. \[Accessed 2 8 2016\].
|
||||
|
||||
B. Botez, "Setup Table design pattern," Microsoft, 2013\. \[Online\]. Available: https://community.dynamics.com/nav/w/designpatterns/76.setup-table. \[Accessed 31 07 2016\].
|
||||
|
||||
\[7\]
|
||||
|
||||
"Shotgun Surgery," \[Online\]. Available: https://en.wikipedia.org/wiki/Shotgun\_surgery. \[Accessed 31 07 2016\].
|
||||
|
||||
\[8\]
|
||||
|
||||
M. Fowler, Refactoring: Improving the design of existing code, Addison Wesley, 1999\.
|
||||
|
||||
\[9\]
|
||||
|
||||
"Masking out," \[Online\]. Available: https://en.wikipedia.org/wiki/Data\_masking\#Masking\_out. \[Accessed 29 7 2016\].
|
||||
|
||||
\[10\]
|
||||
|
||||
"Key Vault," Microsoft, \[Online\]. Available: https://azure.microsoft.com/en-us/services/key-vault/.
|
||||
|
||||
\[11\]
|
||||
|
||||
"How to: Configure SSL to Secure the Connection to Microsoft Dynamics NAV Web Client," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/hh167264(v=nav.90).aspx. \[Accessed 2 8 2016\].
|
||||
|
||||
\[12\]
|
||||
|
||||
"sniffer," \[Online\]. Available: http://compnetworking.about.com/od/networksecurityprivacy/g/bldef\_sniffer.htm. \[Accessed 02 08 2016\].
|
||||
\[12\] "sniffer," \[Online\]. Available: http://compnetworking.about.com/od/networksecurityprivacy/g/bldef\_sniffer.htm. \[Accessed 02 08 2016\].
|
||||
|
||||
|
||||
|
||||
[anchor0]: Logo-_2D00_-Single-Point-of-Access.png
|
||||
[anchor1]: /nav/w/designpatterns/276.2-data-encryption
|
||||
[anchor2]: /nav/w/designpatterns/276.encryption
|
||||
[anchor3]: /nav/w/designpatterns/275.1-sensitive-data-encapsulation
|
||||
[anchor1]: /navpatterns/1-patterns/security/2-data-encryption/
|
||||
[anchor2]: /navpatterns/1-patterns/security/2-data-encryption/
|
||||
[anchor3]: /navpatterns/1-patterns/security/1-sensitive-data-encapsulation/
|
||||
[anchor4]: Multi-_2D00_-1-2-3-4.JPG
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -4,10 +4,7 @@ weight = 180
|
|||
+++
|
||||
_By Bogdana Botez at Microsoft Development Center Copenhagen_
|
||||
|
||||
_[![ ][image0]][anchor0]
|
||||
_
|
||||
|
||||
__
|
||||
[![ ][image0]][anchor0]
|
||||
|
||||
**Aliases:** Masking out
|
||||
|
||||
|
|
@ -15,8 +12,6 @@ __
|
|||
|
||||
**Problem**: The entered information is visible during data entry and whenever any user (the one who entered the data, or a foreign user) opens the UI.
|
||||
|
||||
****
|
||||
|
||||
**Forces:**
|
||||
|
||||
* **Information disclosure:** sensitive data is visible in the UI.
|
||||
|
|
@ -31,11 +26,11 @@ _Figure 1 - The field "Password" is masked._
|
|||
|
||||
To apply this pattern in Dynamics NAV, the developer has two choices:
|
||||
|
||||
**1\.** **Mask everywhere**
|
||||
1. **Mask everywhere**
|
||||
|
||||
Mask the field in all pages which expose it or will expose it in the future. In this case, masking needs to be set at the table level, by opening the table in design mode and setting the field's property ExtendedDatatype=Masked.
|
||||
|
||||
**2\.** **Mask only in selected pages**
|
||||
2. **Mask only in selected pages**
|
||||
|
||||
Mask the field in only a subset of pages. Open the pages where the field should be masked in design mode, open the property page for the field in question, and set ExtendedDatatype=Masked. This option can be used for example when a field should be hidden from most users (in most usual pages), but still visible to administrators in specific pages.
|
||||
|
||||
|
|
@ -49,53 +44,29 @@ Mask the field in only a subset of pages. Open the pages where the field should
|
|||
|
||||
**References**
|
||||
|
||||
\[1\]
|
||||
\[1\] "Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Separation_of_concerns.
|
||||
|
||||
"Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Separation\_of\_concerns.
|
||||
\[2\] "GUID Structure," \[Online\]. Available: https://msdn.microsoft.com/en-us/library/aa373931(VS.85).aspx.
|
||||
|
||||
\[2\]
|
||||
\[3\] "Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Binary_large_object.
|
||||
|
||||
"GUID Structure," \[Online\]. Available: https://msdn.microsoft.com/en-us/library/aa373931(VS.85).aspx.
|
||||
\[4\] waldo, "How Do I: Manage Companies in Microsoft Dynamics NAV 2013 R2".
|
||||
|
||||
\[3\]
|
||||
\[5\] Microsoft, "Multitenant Deployment Architecture," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/dn271675(v=nav.90).aspx.
|
||||
|
||||
"Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Binary\_large\_object.
|
||||
\[6\] B. Botez, "Setup Table design pattern," Microsoft, 2013\. \[Online\]. Available: https://community.dynamics.com/nav/w/designpatterns/76.setup-table. \[Accessed 31 07 2016\].
|
||||
|
||||
\[4\]
|
||||
\[7\] "Shotgun Surgery," \[Online\]. Available: https://en.wikipedia.org/wiki/Shotgun_surgery. \[Accessed 31 07 2016\].
|
||||
|
||||
waldo, "How Do I: Manage Companies in Microsoft Dynamics NAV 2013 R2".
|
||||
\[8\] M. Fowler, Refactoring: Improving the design of existing code, Addison Wesley, 1999\.
|
||||
|
||||
\[5\]
|
||||
\[9\] "Masking out," \[Online\]. Available: https://en.wikipedia.org/wiki/Data_masking\#Masking_out. \[Accessed 29 7 2016\].
|
||||
|
||||
Microsoft, "Multitenant Deployment Architecture," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/dn271675(v=nav.90).aspx.
|
||||
\[10\] "Key Vault," Microsoft, \[Online\]. Available: https://azure.microsoft.com/en-us/services/key-vault/.
|
||||
|
||||
\[6\]
|
||||
\[11\] "How to: Configure SSL to Secure the Connection to Microsoft Dynamics NAV Web Client," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/hh167264(v=nav.90).aspx. \[Accessed 2 8 2016\].
|
||||
|
||||
B. Botez, "Setup Table design pattern," Microsoft, 2013\. \[Online\]. Available: https://community.dynamics.com/nav/w/designpatterns/76.setup-table. \[Accessed 31 07 2016\].
|
||||
|
||||
\[7\]
|
||||
|
||||
"Shotgun Surgery," \[Online\]. Available: https://en.wikipedia.org/wiki/Shotgun\_surgery. \[Accessed 31 07 2016\].
|
||||
|
||||
\[8\]
|
||||
|
||||
M. Fowler, Refactoring: Improving the design of existing code, Addison Wesley, 1999\.
|
||||
|
||||
\[9\]
|
||||
|
||||
"Masking out," \[Online\]. Available: https://en.wikipedia.org/wiki/Data\_masking\#Masking\_out. \[Accessed 29 7 2016\].
|
||||
|
||||
\[10\]
|
||||
|
||||
"Key Vault," Microsoft, \[Online\]. Available: https://azure.microsoft.com/en-us/services/key-vault/.
|
||||
|
||||
\[11\]
|
||||
|
||||
"How to: Configure SSL to Secure the Connection to Microsoft Dynamics NAV Web Client," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/hh167264(v=nav.90).aspx. \[Accessed 2 8 2016\].
|
||||
|
||||
\[12\]
|
||||
|
||||
"sniffer," \[Online\]. Available: http://compnetworking.about.com/od/networksecurityprivacy/g/bldef\_sniffer.htm. \[Accessed 02 08 2016\].
|
||||
\[12\] "sniffer," \[Online\]. Available: http://compnetworking.about.com/od/networksecurityprivacy/g/bldef_sniffer.htm. \[Accessed 02 08 2016\].
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -4,10 +4,7 @@ weight = 190
|
|||
+++
|
||||
_By Bogdana Botez at Microsoft Development Center Copenhagen_
|
||||
|
||||
_[![ ][image0]][anchor0]
|
||||
_
|
||||
|
||||
__
|
||||
[![ ][image0]][anchor0]
|
||||
|
||||
**Context**: The security of data transmission is just as important as the security of data storage. When data is transmitted over the web, Secure Sockets Layer (SSL) is available to be used with the web client in Dynamics NAV. Microsoft's NAV cloud solution has SSL enabled by default. However, if a partner company chooses to deploy their own NAV, then they need to handle SSL explicitly.
|
||||
|
||||
|
|
@ -25,7 +22,7 @@ _SSL_ is a web protocol that encrypts data that is transmitted over a network to
|
|||
|
||||
Figure 1 shows data communication between the client (where the user enters data) and the server (which connects further to the database). Without encryption (left side), data is available in clear text over the wire. A person equipped with a network sniffer can easily intercept and read it. On the right side of the picture, SSL is used to encrypt the user's data. Sniffing the traffic would capture the encrypted stream, but access to the real content would be impeded by encryption.
|
||||
|
||||
**[![ ][image1]][anchor1]**
|
||||
[![ ][image1]][anchor1]
|
||||
|
||||
_Figure 1 - Data transmission before (http://...) and after SSL encryption (https://...)._
|
||||
|
||||
|
|
@ -42,53 +39,29 @@ _Figure 1 - Data transmission before (http://...) and after SSL encryption (http
|
|||
|
||||
**References**
|
||||
|
||||
\[1\]
|
||||
\[1\] "Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Separation_of_concerns.
|
||||
|
||||
"Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Separation\_of\_concerns.
|
||||
\[2\] "GUID Structure," \[Online\]. Available: https://msdn.microsoft.com/en-us/library/aa373931(VS.85).aspx.
|
||||
|
||||
\[2\]
|
||||
\[3\] "Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Binary_large_object.
|
||||
|
||||
"GUID Structure," \[Online\]. Available: https://msdn.microsoft.com/en-us/library/aa373931(VS.85).aspx.
|
||||
\[4\] waldo, "How Do I: Manage Companies in Microsoft Dynamics NAV 2013 R2".
|
||||
|
||||
\[3\]
|
||||
\[5\] Microsoft, "Multitenant Deployment Architecture," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/dn271675(v=nav.90).aspx.
|
||||
|
||||
"Wikipedia," \[Online\]. Available: https://en.wikipedia.org/wiki/Binary\_large\_object.
|
||||
\[6\] B. Botez, "Setup Table design pattern," Microsoft, 2013\. \[Online\]. Available: https://community.dynamics.com/nav/w/designpatterns/76.setup-table. \[Accessed 31 07 2016\].
|
||||
|
||||
\[4\]
|
||||
\[7\] "Shotgun Surgery," \[Online\]. Available: https://en.wikipedia.org/wiki/Shotgun_surgery. \[Accessed 31 07 2016\].
|
||||
|
||||
waldo, "How Do I: Manage Companies in Microsoft Dynamics NAV 2013 R2".
|
||||
\[8\] M. Fowler, Refactoring: Improving the design of existing code, Addison Wesley, 1999\.
|
||||
|
||||
\[5\]
|
||||
\[9\] "Masking out," \[Online\]. Available: https://en.wikipedia.org/wiki/Data_masking#Masking_out. \[Accessed 29 7 2016\].
|
||||
|
||||
Microsoft, "Multitenant Deployment Architecture," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/dn271675(v=nav.90).aspx.
|
||||
\[10\] "Key Vault," Microsoft, \[Online\]. Available: https://azure.microsoft.com/en-us/services/key-vault/.
|
||||
|
||||
\[6\]
|
||||
\[11\] "How to: Configure SSL to Secure the Connection to Microsoft Dynamics NAV Web Client," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/hh167264(v=nav.90).aspx. \[Accessed 2 8 2016\].
|
||||
|
||||
B. Botez, "Setup Table design pattern," Microsoft, 2013\. \[Online\]. Available: https://community.dynamics.com/nav/w/designpatterns/76.setup-table. \[Accessed 31 07 2016\].
|
||||
|
||||
\[7\]
|
||||
|
||||
"Shotgun Surgery," \[Online\]. Available: https://en.wikipedia.org/wiki/Shotgun\_surgery. \[Accessed 31 07 2016\].
|
||||
|
||||
\[8\]
|
||||
|
||||
M. Fowler, Refactoring: Improving the design of existing code, Addison Wesley, 1999\.
|
||||
|
||||
\[9\]
|
||||
|
||||
"Masking out," \[Online\]. Available: https://en.wikipedia.org/wiki/Data\_masking\#Masking\_out. \[Accessed 29 7 2016\].
|
||||
|
||||
\[10\]
|
||||
|
||||
"Key Vault," Microsoft, \[Online\]. Available: https://azure.microsoft.com/en-us/services/key-vault/.
|
||||
|
||||
\[11\]
|
||||
|
||||
"How to: Configure SSL to Secure the Connection to Microsoft Dynamics NAV Web Client," Microsoft, \[Online\]. Available: https://msdn.microsoft.com/en-us/library/hh167264(v=nav.90).aspx. \[Accessed 2 8 2016\].
|
||||
|
||||
\[12\]
|
||||
|
||||
"sniffer," \[Online\]. Available: http://compnetworking.about.com/od/networksecurityprivacy/g/bldef\_sniffer.htm. \[Accessed 02 08 2016\].
|
||||
\[12\] "sniffer," \[Online\]. Available: http://compnetworking.about.com/od/networksecurityprivacy/g/bldef_sniffer.htm. \[Accessed 02 08 2016\].
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -20,8 +20,8 @@ Use the following patterns to enhance security on your NAV system.
|
|||
|
||||
|
||||
|
||||
[anchor0]: /nav/w/designpatterns/275.sensitive-data-encapsulation
|
||||
[anchor1]: /nav/w/designpatterns/276.encryption
|
||||
[anchor2]: /nav/w/designpatterns/277.single-point-of-access
|
||||
[anchor3]: /nav/w/designpatterns/278.masked-text
|
||||
[anchor4]: /nav/w/designpatterns/279.ssl-in-nav
|
||||
[anchor0]: /navpatterns/1-patterns/security/1-sensitive-data-encapsulation/
|
||||
[anchor1]: /navpatterns/1-patterns/security/2-data-encryption/
|
||||
[anchor2]: /navpatterns/1-patterns/security/3-single-point-of-access/
|
||||
[anchor3]: /navpatterns/1-patterns/security/4-masked-text/
|
||||
[anchor4]: /navpatterns/1-patterns/security/5-ssl-in-nav/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue