Source System: The system containing the changes to be deployed. Usually a development or staging system.
Target System: The system to which changes are applied. Usually a staging or production system.
Deploy Package: A proprietary binary format containing web files, SQL and CLR modules, table contents, and migration scripts.
In Pull mode, an administrator logs in to the target system and initiates the deployment. The target system downloads the deploy package from the source system and installs it locally.
The integrity and authenticity of the deploy package are ensured using a symmetric key shared between the source and target systems.
Pull is the recommended deployment mode and is more secure than Push. An attacker would need to compromise both the target system’s administrator account and the shared symmetric key.
| Server | Inbound traffic | Outbound traffic |
|---|---|---|
| Source server | Allow from target system | Not required |
| Target server | Not required | Allow to source system |
In Push mode, an administrator logs in to the source system and initiates the deployment. The source system transfers the deploy package to the target system, which then installs it.
The integrity and authenticity of the deploy package are ensured using a symmetric key shared between the source and target systems.
Push is less secure than Pull, because an attacker only needs to compromise either the source system’s administrator account or the shared symmetric key. This risk can be reduced by restricting which network addresses are allowed to connect to the target system.
| Server | Inbound traffic | Outbound traffic |
|---|---|---|
| Source server | Not required | Allow to target system |
| Target server | Allow from source system | Not required |
In Manual mode, an administrator logs in to the source system and creates a deploy package, which is then downloaded to their PC. The package is transferred to a location from which it can be uploaded to the target system. An administrator then logs in to the target system and uploads the deploy package.
The integrity of the deploy package is not guaranteed.
Manual deploy mode is generally used for systems that must be air-gapped.
| Server | Inbound traffic | Outbound traffic |
|---|---|---|
| Source server | Not required | Not required |
| Target server | Not required | Not required |
Unlike the other modes, External Deploy uses ZIP files instead of deploy packages.
In External deploy mode, there are two target systems: a shadow target and a real target. An administrator logs in to the source system and initiates the deployment. The source system then negotiates with the shadow target and generates a ZIP file containing files and migration scripts. This ZIP file must be manually applied to both the shadow target and the real target.
The integrity of the ZIP file is not guaranteed.
External Deploy is vulnerable to human error. It requires that the shadow target and the real target are kept in sync.
| Server | Inbound traffic | Outbound traffic |
|---|---|---|
| Source server | Not required | Allow to shadow target |
| Shadow target | Allow from source system | Not required |
| Real target | Not required | Not required |