Skip to content
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

Remote access to T0, T1, and T2 with Bastion #184

Closed
brooke-hamilton opened this issue Apr 28, 2021 · 11 comments
Closed

Remote access to T0, T1, and T2 with Bastion #184

brooke-hamilton opened this issue Apr 28, 2021 · 11 comments
Labels
core New feature or request

Comments

@brooke-hamilton
Copy link
Contributor

brooke-hamilton commented Apr 28, 2021

Benefit/Result/Outcome
So that I can have a secure terminal to log into the environment.

Description
Set up two jump boxes (Windows and Linux) in the SACA hub VNet, and configure Azure Bastion for remote access.

Acceptance Criteria

  • One Windows and one Linux jump box are deployed to the SACA Hub VNet.
  • Azure Bastion is set up and configured to connect to the jump boxes.
  • Jump box authentication is local (not AAD), with credentials stored in KeyVault. The credentials are generated by the deployment.
  • Deployment of the jump boxes and Bastion is optional, defaulted to deploy.
  • Deployment of the jump boxes and Bastion can be done as a separate deployment step.
  • Guidance on the approach is created in a markdown document, including the reason for choosing Bastion, why AAD authentication is not used on the jump boxes, and what customers should do if they want smart card authentication.

Out of scope:

  • Apply STIGs and additional security configurations to the jump boxes, including forwarding logging to T1.
  • Remote access to Tier 3 for workload owners. This solution will allow access to Tier 3, but is not the solution intended for Tier 3 workload owners. Tier 3 workload owners will configure their own solutions depending on their needs.
@brooke-hamilton brooke-hamilton added core New feature or request persona: IT admin labels Apr 28, 2021
@jjansen23
Copy link
Contributor

When/who creates the credentials that should be used to connect to the jump boxes ?
Are we're thinking to add this as input to the deployment process by specifying parameters ?
Is the thinking to use a specific password pattern based on the mlz name or any other known info?
When do these local creds expire, if at all ?
Will these keys be rotated to minimize exposures/breaches ?
Should we, at this time update the MLZ template to reflect the increase in cost to adding these services ? Currently it's measured around .
If deployment of the jump boxes and Bastion can be done as a separate deployment step, will it be as easy as running the deploy script with a parameter (like -bastion) - Striving for simplicity while complying with current deployment pattern. All this will be captured, in the guidance markdown document.
Are we set to support customers who lose/forget their local creds ? This may be a non-issue based on earlier questions.

@glennmusa
Copy link
Contributor

Thanks for getting this up @brooke-hamilton!

I'll +1 these points @jjansen23 makes below

When/who creates the credentials that should be used to connect to the jump boxes?
Are we're thinking to add this as input to the deployment process by specifying parameters?

These two seem related.

  • I think the immediate value is in generating these credentials for the user, providing it to the Terraform that creates the machine, and placing them in a Key Vault for later retrieval. There's good reference today in the azure-cli of how a secure password is generated.

  • I think the nice to have is to be able to provide my own credential.

If deployment of the jump boxes and Bastion can be done as a separate deployment step, will it be as easy as running the deploy script with a parameter (like -bastion)

  • I think the immediate value is in providing Bastion and the jumpboxes out of the box.

  • The nice to have is the easy opt-out.

These two smell beyond the scope for today:

When do these local creds expire, if at all? Will these keys be rotated to minimize exposures/breaches?
Will these keys be rotated to minimize exposures/breaches?

And I think this would be overcome by managing the credential with KeyVault/deployment user having direct access to the resource:

Are we set to support customers who lose/forget their local creds? This may be a non-issue based on earlier questions.

@glennmusa
Copy link
Contributor

  • One Windows and one Linux jump box are deployed to the SACA Hub VNet.

Do we know of any universally available SKUs to use as a "baseline" between clouds?

@brooke-hamilton
Copy link
Contributor Author

When/who creates the credentials that should be used to connect to the jump boxes?
Are we're thinking to add this as input to the deployment process by specifying parameters?

These two seem related.

  • I think the immediate value is in generating these credentials for the user, providing it to the Terraform that creates the machine, and placing them in a Key Vault for later retrieval. There's good reference today in the azure-cli of how a secure password is generated.
  • I think the nice to have is to be able to provide my own credential.

I updated the description to say that the credentials will be generated by the deployment.
I agree that it would be nice to be able to provide the desired user name.

@brooke-hamilton
Copy link
Contributor Author

When do these local creds expire, if at all ?
Will these keys be rotated to minimize exposures/breaches ?

We will have a separate GH issue to cover additional security configuration. (And I think changing passwords is no longer recommended, but I'll defer to the work on that issue.)

@brooke-hamilton
Copy link
Contributor Author

If deployment of the jump boxes and Bastion can be done as a separate deployment step, will it be as easy as running the deploy script with a parameter (like -bastion) - Striving for simplicity while complying with current deployment pattern. All this will be captured, in the guidance markdown document.

Yes 👍. The deployment of Bastion can be done as a separate step, and it will default to running as part of the main deployment. The only difference from what you said is that I think we would want to have a flag like --no-bastion to disable the Bastion deployment.

@brooke-hamilton
Copy link
Contributor Author

Are we set to support customers who lose/forget their local creds ? This may be a non-issue based on earlier questions.

I don't know. Maybe we should do this as part of a separate issue.

If creds are lost, they can be found in KeyVault, so maybe it's not an issue. We may need guidance on changing a credential and adding new credentials.

@brooke-hamilton
Copy link
Contributor Author

  • One Windows and one Linux jump box are deployed to the SACA Hub VNet.

Do we know of any universally available SKUs to use as a "baseline" between clouds?

We will probably need to choose default SKUs for each cloud, and a default SKU if the cloud is something we haven't planned for.

@glennmusa
Copy link
Contributor

glennmusa commented Apr 28, 2021

Set up two jump boxes (Windows and Linux) in the SACA hub VNet, and configure Azure Bastion for remote access.

Ah, this also prompts @brooke-hamilton: are there machines deployed into the spokes that can be accessed via the Bastion jumpboxes -- or is that for another day?

@glennmusa
Copy link
Contributor

Staged discrete tasks from this issue. Let me know your thoughts here or address scope in the individual issues as you see fit @brooke-hamilton @Breanna-Stryker @jjansen23 @Phydeauxman:

#186
#187
#188
#189
#190

Acceptance Criteria

@brooke-hamilton
Copy link
Contributor Author

Closing this issue because it was decomposed into the items above.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
core New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants