{"id":383048,"date":"2024-06-29T04:39:28","date_gmt":"2024-06-29T04:39:28","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=383048"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2024-06-29T04:39:28","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=383048","title":{"rendered":"<span>Reverse DevOps, an invitation to project \u00abBell\u00bb<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7fd\/84a\/3ad\/7fd84a3ad41610f593f369811bfbfae0.png\" width=\"343\" height=\"369\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7fd\/84a\/3ad\/7fd84a3ad41610f593f369811bfbfae0.png\"\/><figcaption><\/figcaption><\/figure>\n<p>Typical DevOps handles code deploys in a single direction: from Dev to PROD, from lower environments to higher environments, and for this there are many well known solutions like Jenkins, Terraform, Octopus. But in the opposite direction the situation is not so good.<\/p>\n<p>Yes, in many companies there are home-grown processes to copy databases from higher environments to the lower ones (with hiding\/removing sensitive data) to reproduce problems, found on PROD. However, in complex scenarios an access to PROD is needed to find the root cause. Developers need at least logs. And in the Enterprise world it&#8217;s all depend on the level of <s>paranoya<\/s> how sensitie the information is.<\/p>\n<p>In the worst-case developers have no access to PROD at all (even temporary and audited), and they are told rumors (lol) about what happens there. As an option, there might be a Teams of Webex meeting with 20+ participants with screen sharing, and a developer has at least a chance to tell where to click. Needless to say, such meetings are very ineffective.<\/p>\n<p>With a better luck developers can obtain a temporary access to production using different tools. One example could be <a href=\"https:\/\/techdocs.broadcom.com\/us\/en\/symantec-security-software\/identity-security\/identity-management-and-governance-connectors\/1-0\/connectors\/ca-connectors\/ca-privileged-access-manager.html\" rel=\"noopener noreferrer nofollow\">CA PAM<\/a>, but such solutions (with any type of Remove Desktop Access) have significant drawbacks and they typically provide all-or-nothing access.Potentially, they can ruin the production while typically to investigate a problem they need just read-only access, and there is no such thing as &#171;read-only access&#187; in Remote Desktop. Even for databases, where there is an explicit read-only role, there is a problem:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dce\/dea\/a68\/dcedeaa68a961ed3d0889f0bf7ec8a37.png\" width=\"403\" height=\"114\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dce\/dea\/a68\/dcedeaa68a961ed3d0889f0bf7ec8a37.png\"\/><figcaption><\/figcaption><\/figure>\n<p>Because of what you see in a second like, when working with production you have copy\/paste functionality disabled in Citrix or RDP session, and this is making your work a real nightmare.For example, if you have a useful query which is used to show you some technical data, you can&#8217;t copy\/paste it into production, because copy\/paste is disabled completely.<\/p>\n<p>The mission of the project is to create a safe access method to the higher environments, combining easy friendly interface and interactivity with the full audit of all operations and controlled manner of what users can do and what they can&#8217;t.<\/p>\n<p>The project is called <a href=\"https:\/\/www.actionatdistance.com\/\" rel=\"noopener noreferrer nofollow\">Bell -Action at a distance<\/a>, and a bearded guy on the logo is <a href=\"https:\/\/en.wikipedia.org\/wiki\/John_Stewart_Bell\" rel=\"noopener noreferrer nofollow\">John Steward Bell,<\/a> you know him if you had ever heard about the Quantum Entanglement.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/e8f\/b7a\/87d\/e8fb7a87de681bf85a3e301077a45b13.jpg\" width=\"315\" height=\"317\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e8f\/b7a\/87d\/e8fb7a87de681bf85a3e301077a45b13.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<h2>What is already done<\/h2>\n<p>The project is fully functional and is used in a company where I currently employed. This is a project site <a href=\"https:\/\/www.actionatdistance.com\/\" rel=\"noopener noreferrer nofollow\">is here<\/a> I will not repeat what you can find there, I just wanted to highlight few moments.<\/p>\n<p>Project is open source. Powershell is used to develop modules, and server itself works on Windows server, even there are no hard dependencies on Windows. Even Powershell can be used on *nix, but any other *nix scripting language can be used as well. But we expect a help form community to port it to *nix smoothly.<\/p>\n<p>The development <a href=\"https:\/\/www.actionatdistance.com\/writing-a-module\" rel=\"noopener noreferrer nofollow\">is very easy and fun<\/a> &#8212; like making something from LEGO. Like in Jenkins, initially server is &#8216;blank&#8217; &#8212; in Jenkins you start from creating yout own jobs, in Bell you write you own modules, or download the existing modules and adjust them to specifics of your environment. The following modules are ready:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/www.actionatdistance.com\/mssql\" rel=\"noopener noreferrer nofollow\">MSSQL<\/a>\u00a0&#8212; SQL server &#8212; statistics, metrics, logs<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.actionatdistance.com\/WMI.html\" rel=\"noopener noreferrer nofollow\">WMI\u00a0<\/a>&#8212; shows LUNs, free space, status of Windows services<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.actionatdistance.com\/VMware.html\" rel=\"noopener noreferrer nofollow\">VMware<\/a>\u00a0&#8212; inventories and statistics from  VMware servers (data from Postgre)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.actionatdistance.com\/FileBrowse.html\" rel=\"noopener noreferrer nofollow\">FileBrowse<\/a>\u00a0&#8212; allows developers to read log, txt, xml, config files on Windows servers<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.actionatdistance.com\/PerfMon.html\" rel=\"noopener noreferrer nofollow\">PerfMon<\/a>\u00a0&#8212; reads Perfmon stats on Windows servers and plots charts<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.actionatdistance.com\/EventLog.html\" rel=\"noopener noreferrer nofollow\">EventLog<\/a>\u00a0&#8212; displays Event Log<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.actionatdistance.com\/Postgres.html\" rel=\"noopener noreferrer nofollow\">Postgres<\/a>\u00a0&#8212; everything for Postgres database<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.actionatdistance.com\/MySQL.html\" rel=\"noopener noreferrer nofollow\">MySQL<\/a>\u00a0&#8212; everything for MySQL<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.actionatdistance.com\/AWS.html\" rel=\"noopener noreferrer nofollow\">AWS<\/a>\u00a0&#8212; displays status of  EC2 and RDS instances and allows to browse files on S3 buckets<\/p>\n<\/li>\n<\/ul>\n<h3>What we plan to do<\/h3>\n<p><strong>Modules:<\/strong>\u00a0one of the participants of this project is MSSQL DBA. This is why Postgres, MySQL and AWS modules have more limited functionality &#8212; I just tried to copy what I&#8217;ve done for MSSQL, when applicable. If you are Postgre, MySQL (and compatible) or AWS guru you will probably have a lot to add. oracle module is also wanted.<\/p>\n<p><strong>Server:<\/strong>\u00a0Frontend is written on vue.js v2, backend on Node.js. may be it makes sense to update the stack.<\/p>\n<p><strong>Linux:<\/strong>\u00a0to use any other shell, not only ps1.<\/p>\n<p><strong>UI:<\/strong>\u00a0further improvement<\/p>\n<ul>\n<li>\n<p><strong>Zoom In\/Out<\/strong>\u00a0for Charts<\/p>\n<\/li>\n<li>\n<p><strong>Live Charts<\/strong>\u00a0(auto-updated every few seconds)<\/p>\n<\/li>\n<li>\n<p><strong>Actions<\/strong>\u00a0(not read-only operations) &#8212; forms to enter parameters.<\/p>\n<\/li>\n<\/ul>\n<h3>We are waiting for the others to join this project!<\/h3>\n<p>Contact me or my colleague\u00a0<a class=\"mention\" href=\"https:\/\/habr.com\/users\/writer4\">@Writer4<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/600147\/\"> https:\/\/habr.com\/ru\/articles\/600147\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>Typical DevOps handles code deploys in a single direction: from Dev to PROD, from lower environments to higher environments, and for this there are many well known solutions like Jenkins, Terraform, Octopus. But in the opposite direction the situation is not so good.<\/p>\n<p>Yes, in many companies there are home-grown processes to copy databases from higher environments to the lower ones (with hiding\/removing sensitive data) to reproduce problems, found on PROD. However, in complex scenarios an access to PROD is needed to find the root cause. Developers need at least logs. And in the Enterprise world it&#8217;s all depend on the level of <s>paranoya<\/s> how sensitie the information is.<\/p>\n<p>In the worst-case developers have no access to PROD at all (even temporary and audited), and they are told rumors (lol) about what happens there. As an option, there might be a Teams of Webex meeting with 20+ participants with screen sharing, and a developer has at least a chance to tell where to click. Needless to say, such meetings are very ineffective.<\/p>\n<p>With a better luck developers can obtain a temporary access to production using different tools. One example could be <a href=\"https:\/\/techdocs.broadcom.com\/us\/en\/symantec-security-software\/identity-security\/identity-management-and-governance-connectors\/1-0\/connectors\/ca-connectors\/ca-privileged-access-manager.html\" rel=\"noopener noreferrer nofollow\">CA PAM<\/a>, but such solutions (with any type of Remove Desktop Access) have significant drawbacks and they typically provide all-or-nothing access.Potentially, they can ruin the production while typically to investigate a problem they need just read-only access, and there is no such thing as &#171;read-only access&#187; in Remote Desktop. Even for databases, where there is an explicit read-only role, there is a problem:<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>Because of what you see in a second like, when working with production you have copy\/paste functionality disabled in Citrix or RDP session, and this is making your work a real nightmare.For example, if you have a useful query which is used to show you some technical data, you can&#8217;t copy\/paste it into production, because copy\/paste is disabled completely.<\/p>\n<p>The mission of the project is to create a safe access method to the higher environments, combining easy friendly interface and interactivity with the full audit of all operations and controlled manner of what users can do and what they can&#8217;t.<\/p>\n<p>The project is called <a href=\"https:\/\/www.actionatdistance.com\/\" rel=\"noopener noreferrer nofollow\">Bell -Action at a distance<\/a>, and a bearded guy on the logo is <a href=\"https:\/\/en.wikipedia.org\/wiki\/John_Stewart_Bell\" rel=\"noopener noreferrer nofollow\">John Steward Bell,<\/a> you know him if you had ever heard about the Quantum Entanglement.<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<h2>What is already done<\/h2>\n<p>The project is fully functional and is used in a company where I currently employed. This is a project site <a href=\"https:\/\/www.actionatdistance.com\/\" rel=\"noopener noreferrer nofollow\">is here<\/a> I will not repeat what you can find there, I just wanted to highlight few moments.<\/p>\n<p>Project is open source. Powershell is used to develop modules, and server itself works on Windows server, even there are no hard dependencies on Windows. Even Powershell can be used on *nix, but any other *nix scripting language can be used as well. But we expect a help form community to port it to *nix smoothly.<\/p>\n<p>The development <a href=\"https:\/\/www.actionatdistance.com\/writing-a-module\" rel=\"noopener noreferrer nofollow\">is very easy and fun<\/a> &#8212; like making something from LEGO. Like in Jenkins, initially server is &#8216;blank&#8217; &#8212; in Jenkins you start from creating yout own jobs, in Bell you write you own modules, or download the existing modules and adjust them to specifics of your environment. The following modules are ready:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/www.actionatdistance.com\/mssql\" rel=\"noopener noreferrer nofollow\">MSSQL<\/a>\u00a0&#8212; SQL server &#8212; statistics, metrics, logs<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.actionatdistance.com\/WMI.html\" rel=\"noopener noreferrer nofollow\">WMI\u00a0<\/a>&#8212; shows LUNs, free space, status of Windows services<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.actionatdistance.com\/VMware.html\" rel=\"noopener noreferrer nofollow\">VMware<\/a>\u00a0&#8212; inventories and statistics from  VMware servers (data from Postgre)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.actionatdistance.com\/FileBrowse.html\" rel=\"noopener noreferrer nofollow\">FileBrowse<\/a>\u00a0&#8212; allows developers to read log, txt, xml, config files on Windows servers<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.actionatdistance.com\/PerfMon.html\" rel=\"noopener noreferrer nofollow\">PerfMon<\/a>\u00a0&#8212; reads Perfmon stats on Windows servers and plots charts<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.actionatdistance.com\/EventLog.html\" rel=\"noopener noreferrer nofollow\">EventLog<\/a>\u00a0&#8212; displays Event Log<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.actionatdistance.com\/Postgres.html\" rel=\"noopener noreferrer nofollow\">Postgres<\/a>\u00a0&#8212; everything for Postgres database<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.actionatdistance.com\/MySQL.html\" rel=\"noopener noreferrer nofollow\">MySQL<\/a>\u00a0&#8212; everything for MySQL<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.actionatdistance.com\/AWS.html\" rel=\"noopener noreferrer nofollow\">AWS<\/a>\u00a0&#8212; displays status of  EC2 and RDS instances and allows to browse files on S3 buckets<\/p>\n<\/li>\n<\/ul>\n<h3>What we plan to do<\/h3>\n<p><strong>Modules:<\/strong>\u00a0one of the participants of this project is MSSQL DBA. This is why Postgres, MySQL and AWS modules have more limited functionality &#8212; I just tried to copy what I&#8217;ve done for MSSQL, when applicable. If you are Postgre, MySQL (and compatible) or AWS guru you will probably have a lot to add. oracle module is also wanted.<\/p>\n<p><strong>Server:<\/strong>\u00a0Frontend is written on vue.js v2, backend on Node.js. may be it makes sense to update the stack.<\/p>\n<p><strong>Linux:<\/strong>\u00a0to use any other shell, not only ps1.<\/p>\n<p><strong>UI:<\/strong>\u00a0further improvement<\/p>\n<ul>\n<li>\n<p><strong>Zoom In\/Out<\/strong>\u00a0for Charts<\/p>\n<\/li>\n<li>\n<p><strong>Live Charts<\/strong>\u00a0(auto-updated every few seconds)<\/p>\n<\/li>\n<li>\n<p><strong>Actions<\/strong>\u00a0(not read-only operations) &#8212; forms to enter parameters.<\/p>\n<\/li>\n<\/ul>\n<h3>We are waiting for the others to join this project!<\/h3>\n<p>Contact me or my colleague\u00a0<a class=\"mention\" href=\"https:\/\/habr.com\/users\/writer4\">@Writer4<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/600147\/\"> https:\/\/habr.com\/ru\/articles\/600147\/<\/a><br \/><\/br><\/br><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-383048","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/383048","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=383048"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/383048\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=383048"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=383048"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=383048"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}