This commit is contained in:
TheDoubleH 2022-02-11 17:30:04 +00:00
parent de09820554
commit e4f08bf9a7
187 changed files with 6620 additions and 6342 deletions

View file

@ -5,16 +5,16 @@
<meta name=generator content="Hugo 0.92.1">
<meta name=description content>
<title>Single Point of Access :: AL Guidelines</title>
<link href=/css/nucleus.css?1644506469 rel=stylesheet>
<link href=/css/fontawesome-all.min.css?1644506469 rel=stylesheet>
<link href=/css/featherlight.min.css?1644506469 rel=stylesheet>
<link href=/css/perfect-scrollbar.min.css?1644506469 rel=stylesheet>
<link href=/css/auto-complete.css?1644506469 rel=stylesheet>
<link href=/css/theme.css?1644506469 rel=stylesheet>
<link href=/css/theme-blue.css?1644506469 rel=stylesheet>
<link href=/css/variant.css?1644506469 rel=stylesheet>
<link href=/css/print.css?1644506469 rel=stylesheet media=print>
<script src=/js/jquery.min.js?1644506469></script>
<link href=/css/nucleus.css?1644600600 rel=stylesheet>
<link href=/css/fontawesome-all.min.css?1644600600 rel=stylesheet>
<link href=/css/featherlight.min.css?1644600600 rel=stylesheet>
<link href=/css/perfect-scrollbar.min.css?1644600600 rel=stylesheet>
<link href=/css/auto-complete.css?1644600600 rel=stylesheet>
<link href=/css/theme.css?1644600600 rel=stylesheet>
<link href=/css/theme-blue.css?1644600600 rel=stylesheet>
<link href=/css/variant.css?1644600600 rel=stylesheet>
<link href=/css/print.css?1644600600 rel=stylesheet media=print>
<script src=/js/jquery.min.js?1644600600></script>
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
</head>
<body data-url=/navpatterns/1-patterns/security/3-single-point-of-access/>
@ -32,9 +32,9 @@ ALGuidelines.Dev
<input data-search-input id=search-by type=search placeholder=Search...>
<span data-search-clear><i class="fas fa-times"></i></span>
</div>
<script src=/js/lunr.min.js?1644506469></script>
<script src=/js/auto-complete.js?1644506469></script>
<script src=/js/search.js?1644506469></script>
<script src=/js/lunr.min.js?1644600600></script>
<script src=/js/auto-complete.js?1644600600></script>
<script src=/js/search.js?1644600600></script>
</div>
<div class=highlightable>
<ul class=topics>
@ -256,12 +256,9 @@ ALGuidelines.Dev
<main id=body-inner>
<h1>Single Point of Access</h1>
<p><em>By Bogdana Botez at Microsoft Development Center Copenhagen</em></p>
<p>_<a href=Logo-_2D00_-Single-Point-of-Access.png><img src=Logo-_2D00_-Single-Point-of-Access.png alt=" "></a><br>
_</p>
<p>__</p>
<p><a href=Logo-_2D00_-Single-Point-of-Access.png><img src=Logo-_2D00_-Single-Point-of-Access.png alt=" "></a></p>
<p><strong>Context</strong>: Protected data needs to be used. There are many types of entities which might attempt to use the data.</p>
<p><strong>Problem</strong>: 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.</p>
<hr>
<p><strong>Forces:</strong></p>
<ul>
<li><strong>Code duplication:</strong> if each entity attempts to write its own routines for data access, invariably this will bring duplication.</li>
@ -273,8 +270,8 @@ _</p>
</ul>
</li>
</ul>
<p><strong>Solution:</strong> In Dynamics NAV the same library which offers <a href=/nav/w/designpatterns/276.2-data-encryption><strong>Encryption</strong></a>, is also intended to be used as a <strong>Single Point of Access</strong>. Write code to create, read and remove sensitive data only through codeunit 1266 Encryption Management, and never directly.</p>
<p>In Figure 9 (figure numbering is continued from pattern <strong><a href=/nav/w/designpatterns/276.encryption>Encryption</a></strong>), the panels 1, 2 and 3 have applied the <a href=/nav/w/designpatterns/275.1-sensitive-data-encapsulation><strong>Sensitive Data Encapsulation</strong></a> and <a href=/nav/w/designpatterns/276.2-data-encryption><strong>Encryption</strong> </a>patterns. Once data is encapsulated, no matter if it has been encrypted or not, the next pattern, <strong>Single Point of Access</strong>, becomes available as seen in the panels 2 and 3 of Figure 1.</p>
<p><strong>Solution:</strong> In Dynamics NAV the same library which offers <a href=/navpatterns/1-patterns/security/2-data-encryption/><strong>Encryption</strong></a>, is also intended to be used as a <strong>Single Point of Access</strong>. Write code to create, read and remove sensitive data only through codeunit 1266 Encryption Management, and never directly.</p>
<p>In Figure 9 (figure numbering is continued from pattern <strong><a href=/navpatterns/1-patterns/security/2-data-encryption/>Encryption</a></strong>), the panels 1, 2 and 3 have applied the <a href=/navpatterns/1-patterns/security/1-sensitive-data-encapsulation/><strong>Sensitive Data Encapsulation</strong></a> and <a href=/navpatterns/1-patterns/security/2-data-encryption/><strong>Encryption</strong></a> patterns. Once data is encapsulated, no matter if it has been encrypted or not, the next pattern, <strong>Single Point of Access</strong>, becomes available as seen in the panels 2 and 3 of Figure 1.</p>
<p>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.</p>
<p><a href=Multi-_2D00_-1-2-3-4.JPG><img src=Multi-_2D00_-1-2-3-4.JPG alt=" "></a></p>
<p><em>Figure 1- <strong>Single Point of Access</strong> pattern applied.</em></p>
@ -296,30 +293,18 @@ _</p>
<li><strong>Single point of failure:</strong> A defect in the access library will affect all usages until it is found and fixed.</li>
</ul>
<p><strong>References</strong></p>
<p>[1]</p>
<p>&ldquo;Wikipedia,&rdquo; [Online]. Available: <a href=https://en.wikipedia.org/wiki/Separation>https://en.wikipedia.org/wiki/Separation</a>_of_concerns.</p>
<p>[2]</p>
<p>&ldquo;GUID Structure,&rdquo; [Online]. Available: <a href=https://msdn.microsoft.com/en-us/library/aa373931(VS.85).aspx>https://msdn.microsoft.com/en-us/library/aa373931(VS.85).aspx</a>.</p>
<p>[3]</p>
<p>&ldquo;Wikipedia,&rdquo; [Online]. Available: <a href=https://en.wikipedia.org/wiki/Binary>https://en.wikipedia.org/wiki/Binary</a>_large_object.</p>
<p>[4]</p>
<p>waldo, &ldquo;How Do I: Manage Companies in Microsoft Dynamics NAV 2013 R2&rdquo;.</p>
<p>[5]</p>
<p>Microsoft, &ldquo;Multitenant Deployment Architecture,&rdquo; Microsoft, [Online]. Available: <a href="https://msdn.microsoft.com/en-us/library/dn271675(v=nav.90).aspx">https://msdn.microsoft.com/en-us/library/dn271675(v=nav.90).aspx</a>.</p>
<p>[6]</p>
<p>B. Botez, &ldquo;Setup Table design pattern,&rdquo; Microsoft, 2013. [Online]. Available: <a href=https://community.dynamics.com/nav/w/designpatterns/76.setup-table>https://community.dynamics.com/nav/w/designpatterns/76.setup-table</a>. [Accessed 31 07 2016].</p>
<p>[7]</p>
<p>&ldquo;Shotgun Surgery,&rdquo; [Online]. Available: <a href=https://en.wikipedia.org/wiki/Shotgun>https://en.wikipedia.org/wiki/Shotgun</a>_surgery. [Accessed 31 07 2016].</p>
<p>[8]</p>
<p>M. Fowler, Refactoring: Improving the design of existing code, Addison Wesley, 1999.</p>
<p>[9]</p>
<p>&ldquo;Masking out,&rdquo; [Online]. Available: <a href=https://en.wikipedia.org/wiki/Data>https://en.wikipedia.org/wiki/Data</a>_masking#Masking_out. [Accessed 29 7 2016].</p>
<p>[10]</p>
<p>&ldquo;Key Vault,&rdquo; Microsoft, [Online]. Available: <a href=https://azure.microsoft.com/en-us/services/key-vault/>https://azure.microsoft.com/en-us/services/key-vault/</a>.</p>
<p>[11]</p>
<p>&ldquo;How to: Configure SSL to Secure the Connection to Microsoft Dynamics NAV Web Client,&rdquo; Microsoft, [Online]. Available: <a href="https://msdn.microsoft.com/en-us/library/hh167264(v=nav.90).aspx">https://msdn.microsoft.com/en-us/library/hh167264(v=nav.90).aspx</a>. [Accessed 2 8 2016].</p>
<p>[12]</p>
<p>&ldquo;sniffer,&rdquo; [Online]. Available: <a href=http://compnetworking.about.com/od/networksecurityprivacy/g/bldef>http://compnetworking.about.com/od/networksecurityprivacy/g/bldef</a>_sniffer.htm. [Accessed 02 08 2016].</p>
<p>[1] &ldquo;Wikipedia,&rdquo; [Online]. Available: <a href=https://en.wikipedia.org/wiki/Separation_of_concerns>https://en.wikipedia.org/wiki/Separation_of_concerns</a>.</p>
<p>[2] &ldquo;GUID Structure,&rdquo; [Online]. Available: <a href=https://msdn.microsoft.com/en-us/library/aa373931(VS.85).aspx>https://msdn.microsoft.com/en-us/library/aa373931(VS.85).aspx</a>.</p>
<p>[3] &ldquo;Wikipedia,&rdquo; [Online]. Available: <a href=https://en.wikipedia.org/wiki/Binary_large_object>https://en.wikipedia.org/wiki/Binary_large_object</a>.</p>
<p>[4] waldo, &ldquo;How Do I: Manage Companies in Microsoft Dynamics NAV 2013 R2&rdquo;.</p>
<p>[5] Microsoft, &ldquo;Multitenant Deployment Architecture,&rdquo; Microsoft, [Online]. Available: <a href="https://msdn.microsoft.com/en-us/library/dn271675(v=nav.90).aspx">https://msdn.microsoft.com/en-us/library/dn271675(v=nav.90).aspx</a>.</p>
<p>[6] B. Botez, &ldquo;Setup Table design pattern,&rdquo; Microsoft, 2013. [Online]. Available: <a href=https://community.dynamics.com/nav/w/designpatterns/76.setup-table>https://community.dynamics.com/nav/w/designpatterns/76.setup-table</a>. [Accessed 31 07 2016].</p>
<p>[7] &ldquo;Shotgun Surgery,&rdquo; [Online]. Available: <a href=https://en.wikipedia.org/wiki/Shotgun_surgery>https://en.wikipedia.org/wiki/Shotgun_surgery</a>. [Accessed 31 07 2016].</p>
<p>[8] M. Fowler, Refactoring: Improving the design of existing code, Addison Wesley, 1999.</p>
<p>[9] &ldquo;Masking out,&rdquo; [Online]. Available: <a href=https://en.wikipedia.org/wiki/Data_masking#Masking_out>https://en.wikipedia.org/wiki/Data_masking#Masking_out</a>. [Accessed 29 7 2016].</p>
<p>[10] &ldquo;Key Vault,&rdquo; Microsoft, [Online]. Available: <a href=https://azure.microsoft.com/en-us/services/key-vault/>https://azure.microsoft.com/en-us/services/key-vault/</a>.</p>
<p>[11] &ldquo;How to: Configure SSL to Secure the Connection to Microsoft Dynamics NAV Web Client,&rdquo; Microsoft, [Online]. Available: <a href="https://msdn.microsoft.com/en-us/library/hh167264(v=nav.90).aspx">https://msdn.microsoft.com/en-us/library/hh167264(v=nav.90).aspx</a>. [Accessed 2 8 2016].</p>
<p>[12] &ldquo;sniffer,&rdquo; [Online]. Available: <a href=http://compnetworking.about.com/od/networksecurityprivacy/g/bldef_sniffer.htm>http://compnetworking.about.com/od/networksecurityprivacy/g/bldef_sniffer.htm</a>. [Accessed 02 08 2016].</p>
<footer class=footline>
</footer>
</main>
@ -332,12 +317,12 @@ _</p>
<div style=left:-1000px;overflow:scroll;position:absolute;top:-1000px;border:none;box-sizing:content-box;height:200px;margin:0;padding:0;width:200px>
<div style=border:none;box-sizing:content-box;height:200px;margin:0;padding:0;width:200px></div>
</div>
<script src=/js/clipboard.min.js?1644506469></script>
<script src=/js/perfect-scrollbar.min.js?1644506469></script>
<script src=/js/perfect-scrollbar.jquery.min.js?1644506469></script>
<script src=/js/jquery.svg.pan.zoom.js?1644506469></script>
<script src=/js/featherlight.min.js?1644506469></script>
<script src=/js/modernizr.custom-3.6.0.js?1644506469></script>
<script src=/js/relearn.js?1644506469></script>
<script src=/js/clipboard.min.js?1644600600></script>
<script src=/js/perfect-scrollbar.min.js?1644600600></script>
<script src=/js/perfect-scrollbar.jquery.min.js?1644600600></script>
<script src=/js/jquery.svg.pan.zoom.js?1644600600></script>
<script src=/js/featherlight.min.js?1644600600></script>
<script src=/js/modernizr.custom-3.6.0.js?1644600600></script>
<script src=/js/relearn.js?1644600600></script>
</body>
</html>