SlideShare a Scribd company logo
1 of 19
Download to read offline
RUNDECK PRO
ACL Policy Convention Example
Rundeck’s ACL benefits
● Rundeck is great for enabling self-service and improving
collaboration between teams BUT…
○ InfoSec (“lock it down!”)
○ Compliance (“separation of concerns!”)
● Rundeck’s ACL lets you define policy so that you can
determine who can do what, and where they can do it
○ Separates out key tasks like running jobs, viewing
events/history, and writing jobs
○ Everything is logged and auditable, making Compliance,
InfoSec, and Managers more comfortable
About Policies
Rundeck governs access using an ACL policy.
Rundeck models capabilities as resources.
Resources have actions like “read” and “run”
A policy is a set of rules permitting or denying actions on a
resource for a given user or group.
Users and groups are managed in your user directory (LDAP)
About Projects
A project is a place for work activity.
An application team might each have a project.
A project can span one or more environments.
A RUNDECK admin will create projects for their
users
Projects, Environments & Nodes
Project activity happens across environments
A node is a member of just one environment.
Declare a Node attribute: “environment”
DIT Development integration test
UAT User acceptance test
STAGE Final release and staging
PROD Production operation
Example Project Nodes Model
<?xml version="1.0" encoding="UTF-8"?>
<project>
<node name="web1.DIT" tags="" hostname="web1.dit.domain" osFamily="unix" username="rundeck" environment="DIT" />
<node name="app1.DIT" tags="" hostname="app1.dit.domain" osFamily="unix" username="rundeck" environment="DIT" />
<node name="web1.UAT" tags="" hostname="web1.uat.domain" osFamily="unix" username="rundeck" environment="UAT" />
<node name="app1.UAT" tags="" hostname="app1.uat.domain" osFamily="unix" username="rundeck" environment="UAT" />
<node name="web1.STAGE" tags="" hostname="web1.stage.domain" osFamily="unix" username="rundeck" environment="STAGE" />
<node name="app1.STAGE" tags="" hostname="app1.stage.domain" osFamily="unix" username="rundeck" environment="STAGE" />
<node name="web1.PROD" tags="" hostname="web1.prod.domain" osFamily="unix" username="rundeck" environment="PROD" />
<node name="app1.PROD" tags="" hostname="app1.prod.domain" osFamily="unix" username="rundeck" environment="PROD" />
</project>
A node in
“PROD”
environment
Roles used in this example
● {TEAM}: Gives a team access to a Project(s)
Then these Roles give permissions within the context of a
Project...
● AUDIT: Activities (read)
● WRITE: Job writer (read, create, update, delete)
● RUN_STAGE: Jobs run on nodes in environments except
PROD
● RUN_PROD: Jobs run on nodes in PROD
These are only examples. Customize any roles you want!
Matrix of roles & groups for a project
AUDIT
WRITE
RUN_NON_PROD
RUN_PROD
Project A Project B Project C
manager eng SRE
Project-A
Policy: Allow users in Team-C to access Project-C
Project-B Project-C
{TEAM} Grant access to a project
A Team-C user
> Note: “{TEAM}” is a placeholder for a real team name (eg, “Team-C”)
“manager”
{TEAM}.aclpolicy
description: Given a user in group "{TEAM}" and for project name, {TEAM}, then allow
action [read].'
context:
application: 'rundeck'
for:
project:
- match:
name: {TEAM}
allow: [read]
by:
group: {TEAM}
Grants the team access to
their project
> Note: “{TEAM}” is a placeholder for a real team name (eg, “Team-C”)
Policy: AUDIT Allows: Read Events
history history history
Project A Project B Project ...
AUDIT Read job execution history
{TEAM}
“manager”
AUDIT.aclpolicy
description: 'Users in "AUDIT" can [read] events and nodes.'
context:
project: '.*'
for:
resource:
- equals:
kind: event
- allow: [read]
node:
- allow: [read]
by:
group: AUDIT
Read any event
Read any node
Policy: WRITE Allows: create,read,update,delete
WRITE.aclpolicy
Jobs Jobs Jobs
Project A Project B Project ...
{TEAM}
“eng”
WRITE.aclpolicy
description: Users in “WRITE” can change job definitions'
context:
project: '.*'
for:
resource:
- equals:
kind: job
allow: [create,delete]
job:
- allow: [create,read,update,delete]
by:
group: WRITE
Allow actions to change
job definitions
{TEAM}
Policy: RUN_NON_PROD Allows: Read,Run,Kill for Jobs
Allows: Read,Run for Nodes
environment match: ’UAT|DIT|STAGE’
UAT DIT STAGE
PROD
RUN_NON_PROD.aclpolicy
“eng”
RUN_NON_PROD.aclpolicy
description: 'Given user in group "RUN_NON_PROD" for any job, then allow [read,run,kill].'
context:
project: '.*'
for:
job:
- allow: [read,run,kill]
resource:
- equals:
kind: node
allow: [read]
node:
- match:
environment: 'DIT|UAT|STAGE'
allow: [read,run]
by:
group: RUN_NON_PROD
Just the non-PROD nodes
{TEAM}
DIT UAT STAGE PROD
RUN_PROD.aclpolicy
“SRE”
Policy: RUN_PROD Allows: Read,Run,Kill for Jobs
Allows: Read,Run for Nodes
environment equals: ’PROD’
RUN_PROD.aclpolicy
description: 'Given user in group "RUN_PROD" and any job, then allow [read,run,kill].'
context:
project: '.*'
for:
job:
- allow: [read,run,kill]
resource:
- equals:
kind: node
allow: [read]
node:
- equals:
environment: 'PROD'
allow: [read,run]
by:
group: 'RUN_PROD’
Just the PROD nodes
Example tomcat-users.xml
<tomcat-users>
<role rolename="AUDIT" /><!-- sees history -->
<role rolename="WRITE" /><!-- defines jobs -->
<role rolename="RUN_STAGE"/><!-- runs jobs on non-PROD nodes -->
<role rolename="RUN_PROD" /><!-- runs jobs on nodes in PROD -->
<user username="manager" password="***" roles="AUDIT"/>
<user username="eng" password="***" roles="AUDIT,RUN_STAGE"/>
<user username="sre" password="***" roles="AUDIT,RUN_PROD"/>
</tomcat-users>

More Related Content

What's hot

A developers guide to machine learning
A developers guide to machine learningA developers guide to machine learning
A developers guide to machine learningTess Ferrandez
 
Scaling Big Data Mining Infrastructure Twitter Experience
Scaling Big Data Mining Infrastructure Twitter ExperienceScaling Big Data Mining Infrastructure Twitter Experience
Scaling Big Data Mining Infrastructure Twitter ExperienceDataWorks Summit
 
Knowledge Graphs for Transformation: Dynamic Context for the Intelligent Ente...
Knowledge Graphs for Transformation: Dynamic Context for the Intelligent Ente...Knowledge Graphs for Transformation: Dynamic Context for the Intelligent Ente...
Knowledge Graphs for Transformation: Dynamic Context for the Intelligent Ente...Neo4j
 
Data Streaming Ecosystem Management at Booking.com
Data Streaming Ecosystem Management at Booking.com Data Streaming Ecosystem Management at Booking.com
Data Streaming Ecosystem Management at Booking.com confluent
 
Integrate Amazon WorkDocs with Security & Compliance Solutions & Applications...
Integrate Amazon WorkDocs with Security & Compliance Solutions & Applications...Integrate Amazon WorkDocs with Security & Compliance Solutions & Applications...
Integrate Amazon WorkDocs with Security & Compliance Solutions & Applications...Amazon Web Services
 
Securing Kafka
Securing Kafka Securing Kafka
Securing Kafka confluent
 
FlinkML: Large Scale Machine Learning with Apache Flink
FlinkML: Large Scale Machine Learning with Apache FlinkFlinkML: Large Scale Machine Learning with Apache Flink
FlinkML: Large Scale Machine Learning with Apache FlinkTheodoros Vasiloudis
 
From my sql to postgresql using kafka+debezium
From my sql to postgresql using kafka+debeziumFrom my sql to postgresql using kafka+debezium
From my sql to postgresql using kafka+debeziumClement Demonchy
 
AWS Neptune - A Fast and reliable Graph Database Built for the Cloud
AWS Neptune - A Fast and reliable Graph Database Built for the CloudAWS Neptune - A Fast and reliable Graph Database Built for the Cloud
AWS Neptune - A Fast and reliable Graph Database Built for the CloudAmazon Web Services
 
Introducing Change Data Capture with Debezium
Introducing Change Data Capture with DebeziumIntroducing Change Data Capture with Debezium
Introducing Change Data Capture with DebeziumChengKuan Gan
 
Untangling Cluster Management with Helix
Untangling Cluster Management with HelixUntangling Cluster Management with Helix
Untangling Cluster Management with HelixAmy W. Tang
 
End-to-end Streaming Between gRPC Services Via Kafka with John Fallows
End-to-end Streaming Between gRPC Services Via Kafka with John FallowsEnd-to-end Streaming Between gRPC Services Via Kafka with John Fallows
End-to-end Streaming Between gRPC Services Via Kafka with John FallowsHostedbyConfluent
 
Developing Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaDeveloping Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaJoe Stein
 
Securing data in hybrid environments using Apache Ranger
Securing data in hybrid environments using Apache RangerSecuring data in hybrid environments using Apache Ranger
Securing data in hybrid environments using Apache RangerDataWorks Summit
 
So You Want to Write a Connector?
So You Want to Write a Connector? So You Want to Write a Connector?
So You Want to Write a Connector? confluent
 
Elastic Load Balancing Deep Dive and Best Practices - Pop-up Loft Tel Aviv
Elastic Load Balancing Deep Dive and Best Practices - Pop-up Loft Tel AvivElastic Load Balancing Deep Dive and Best Practices - Pop-up Loft Tel Aviv
Elastic Load Balancing Deep Dive and Best Practices - Pop-up Loft Tel AvivAmazon Web Services
 
KSQL: Streaming SQL for Kafka
KSQL: Streaming SQL for KafkaKSQL: Streaming SQL for Kafka
KSQL: Streaming SQL for Kafkaconfluent
 
Consistency and Completeness: Rethinking Distributed Stream Processing in Apa...
Consistency and Completeness: Rethinking Distributed Stream Processing in Apa...Consistency and Completeness: Rethinking Distributed Stream Processing in Apa...
Consistency and Completeness: Rethinking Distributed Stream Processing in Apa...Guozhang Wang
 

What's hot (20)

A developers guide to machine learning
A developers guide to machine learningA developers guide to machine learning
A developers guide to machine learning
 
Scaling Big Data Mining Infrastructure Twitter Experience
Scaling Big Data Mining Infrastructure Twitter ExperienceScaling Big Data Mining Infrastructure Twitter Experience
Scaling Big Data Mining Infrastructure Twitter Experience
 
Knowledge Graphs for Transformation: Dynamic Context for the Intelligent Ente...
Knowledge Graphs for Transformation: Dynamic Context for the Intelligent Ente...Knowledge Graphs for Transformation: Dynamic Context for the Intelligent Ente...
Knowledge Graphs for Transformation: Dynamic Context for the Intelligent Ente...
 
Data Streaming Ecosystem Management at Booking.com
Data Streaming Ecosystem Management at Booking.com Data Streaming Ecosystem Management at Booking.com
Data Streaming Ecosystem Management at Booking.com
 
Integrate Amazon WorkDocs with Security & Compliance Solutions & Applications...
Integrate Amazon WorkDocs with Security & Compliance Solutions & Applications...Integrate Amazon WorkDocs with Security & Compliance Solutions & Applications...
Integrate Amazon WorkDocs with Security & Compliance Solutions & Applications...
 
Securing Kafka
Securing Kafka Securing Kafka
Securing Kafka
 
FlinkML: Large Scale Machine Learning with Apache Flink
FlinkML: Large Scale Machine Learning with Apache FlinkFlinkML: Large Scale Machine Learning with Apache Flink
FlinkML: Large Scale Machine Learning with Apache Flink
 
From my sql to postgresql using kafka+debezium
From my sql to postgresql using kafka+debeziumFrom my sql to postgresql using kafka+debezium
From my sql to postgresql using kafka+debezium
 
AWS Neptune - A Fast and reliable Graph Database Built for the Cloud
AWS Neptune - A Fast and reliable Graph Database Built for the CloudAWS Neptune - A Fast and reliable Graph Database Built for the Cloud
AWS Neptune - A Fast and reliable Graph Database Built for the Cloud
 
MLOps at OLX
MLOps at OLXMLOps at OLX
MLOps at OLX
 
Introducing Change Data Capture with Debezium
Introducing Change Data Capture with DebeziumIntroducing Change Data Capture with Debezium
Introducing Change Data Capture with Debezium
 
Amazon RDS Deep Dive
Amazon RDS Deep DiveAmazon RDS Deep Dive
Amazon RDS Deep Dive
 
Untangling Cluster Management with Helix
Untangling Cluster Management with HelixUntangling Cluster Management with Helix
Untangling Cluster Management with Helix
 
End-to-end Streaming Between gRPC Services Via Kafka with John Fallows
End-to-end Streaming Between gRPC Services Via Kafka with John FallowsEnd-to-end Streaming Between gRPC Services Via Kafka with John Fallows
End-to-end Streaming Between gRPC Services Via Kafka with John Fallows
 
Developing Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaDeveloping Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache Kafka
 
Securing data in hybrid environments using Apache Ranger
Securing data in hybrid environments using Apache RangerSecuring data in hybrid environments using Apache Ranger
Securing data in hybrid environments using Apache Ranger
 
So You Want to Write a Connector?
So You Want to Write a Connector? So You Want to Write a Connector?
So You Want to Write a Connector?
 
Elastic Load Balancing Deep Dive and Best Practices - Pop-up Loft Tel Aviv
Elastic Load Balancing Deep Dive and Best Practices - Pop-up Loft Tel AvivElastic Load Balancing Deep Dive and Best Practices - Pop-up Loft Tel Aviv
Elastic Load Balancing Deep Dive and Best Practices - Pop-up Loft Tel Aviv
 
KSQL: Streaming SQL for Kafka
KSQL: Streaming SQL for KafkaKSQL: Streaming SQL for Kafka
KSQL: Streaming SQL for Kafka
 
Consistency and Completeness: Rethinking Distributed Stream Processing in Apa...
Consistency and Completeness: Rethinking Distributed Stream Processing in Apa...Consistency and Completeness: Rethinking Distributed Stream Processing in Apa...
Consistency and Completeness: Rethinking Distributed Stream Processing in Apa...
 

Similar to RUNDECK PRO - example acl policy convention

Building a Dev/Test Cloud with Apache CloudStack
Building a Dev/Test Cloud with Apache CloudStackBuilding a Dev/Test Cloud with Apache CloudStack
Building a Dev/Test Cloud with Apache CloudStackke4qqq
 
Apache Deltacloud: Speaking EC2 and CIMI to Openstack (and others)
Apache Deltacloud: Speaking EC2 and CIMI to Openstack (and others)Apache Deltacloud: Speaking EC2 and CIMI to Openstack (and others)
Apache Deltacloud: Speaking EC2 and CIMI to Openstack (and others)lutter
 
Five android architecture
Five android architectureFive android architecture
Five android architectureTomislav Homan
 
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013Amazon Web Services
 
GDayX - Advanced Angular.JS
GDayX - Advanced Angular.JSGDayX - Advanced Angular.JS
GDayX - Advanced Angular.JSNicolas Embleton
 
Extending and Customizing Open Atrium
Extending and Customizing Open AtriumExtending and Customizing Open Atrium
Extending and Customizing Open AtriumNuvole
 
REST teori og praksis; REST in theory and practice
REST teori og praksis; REST in theory and practiceREST teori og praksis; REST in theory and practice
REST teori og praksis; REST in theory and practicehamnis
 
Building a Dev/Test Cloud with Apache CloudStack
Building a Dev/Test Cloud with Apache CloudStackBuilding a Dev/Test Cloud with Apache CloudStack
Building a Dev/Test Cloud with Apache CloudStackke4qqq
 
Rundeck Office Hours: Best Practices for Access Control Policies
Rundeck Office Hours:  Best Practices for Access Control PoliciesRundeck Office Hours:  Best Practices for Access Control Policies
Rundeck Office Hours: Best Practices for Access Control PoliciesTraciMyers6
 
Rundeck Office Hours: Best Practices Access Control Policies
Rundeck Office Hours:  Best Practices Access Control PoliciesRundeck Office Hours:  Best Practices Access Control Policies
Rundeck Office Hours: Best Practices Access Control PoliciesRundeck
 
Angular presentation
Angular presentationAngular presentation
Angular presentationMatus Szabo
 
Moving ActiveRecord objects to the boundaries of your domain
Moving ActiveRecord objects to the boundaries of your domainMoving ActiveRecord objects to the boundaries of your domain
Moving ActiveRecord objects to the boundaries of your domainPatrick Dougall
 
Open event (Drupalcamp Sunderland 2015)
Open event (Drupalcamp Sunderland 2015)Open event (Drupalcamp Sunderland 2015)
Open event (Drupalcamp Sunderland 2015)Jorge López-Lago
 
The elastic stack on docker
The elastic stack on dockerThe elastic stack on docker
The elastic stack on dockerSmartWave
 
Ten practical ways to improve front-end performance
Ten practical ways to improve front-end performanceTen practical ways to improve front-end performance
Ten practical ways to improve front-end performanceAndrew Rota
 
Ingres For Oracle Users
Ingres For Oracle UsersIngres For Oracle Users
Ingres For Oracle UsersMichael Sale
 
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012 Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012 Atlassian
 
Everything You Should Know About the New Angular CLI
Everything You Should Know About the New Angular CLIEverything You Should Know About the New Angular CLI
Everything You Should Know About the New Angular CLIAmadou Sall
 

Similar to RUNDECK PRO - example acl policy convention (20)

Building a Dev/Test Cloud with Apache CloudStack
Building a Dev/Test Cloud with Apache CloudStackBuilding a Dev/Test Cloud with Apache CloudStack
Building a Dev/Test Cloud with Apache CloudStack
 
Apache Deltacloud: Speaking EC2 and CIMI to Openstack (and others)
Apache Deltacloud: Speaking EC2 and CIMI to Openstack (and others)Apache Deltacloud: Speaking EC2 and CIMI to Openstack (and others)
Apache Deltacloud: Speaking EC2 and CIMI to Openstack (and others)
 
Five android architecture
Five android architectureFive android architecture
Five android architecture
 
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
 
GDayX - Advanced Angular.JS
GDayX - Advanced Angular.JSGDayX - Advanced Angular.JS
GDayX - Advanced Angular.JS
 
Catalyst MVC
Catalyst MVCCatalyst MVC
Catalyst MVC
 
Extending and Customizing Open Atrium
Extending and Customizing Open AtriumExtending and Customizing Open Atrium
Extending and Customizing Open Atrium
 
REST teori og praksis; REST in theory and practice
REST teori og praksis; REST in theory and practiceREST teori og praksis; REST in theory and practice
REST teori og praksis; REST in theory and practice
 
Building a Dev/Test Cloud with Apache CloudStack
Building a Dev/Test Cloud with Apache CloudStackBuilding a Dev/Test Cloud with Apache CloudStack
Building a Dev/Test Cloud with Apache CloudStack
 
Rundeck Office Hours: Best Practices for Access Control Policies
Rundeck Office Hours:  Best Practices for Access Control PoliciesRundeck Office Hours:  Best Practices for Access Control Policies
Rundeck Office Hours: Best Practices for Access Control Policies
 
Rundeck Office Hours: Best Practices Access Control Policies
Rundeck Office Hours:  Best Practices Access Control PoliciesRundeck Office Hours:  Best Practices Access Control Policies
Rundeck Office Hours: Best Practices Access Control Policies
 
Angular presentation
Angular presentationAngular presentation
Angular presentation
 
Moving ActiveRecord objects to the boundaries of your domain
Moving ActiveRecord objects to the boundaries of your domainMoving ActiveRecord objects to the boundaries of your domain
Moving ActiveRecord objects to the boundaries of your domain
 
Nicolas Embleton, Advanced Angular JS
Nicolas Embleton, Advanced Angular JSNicolas Embleton, Advanced Angular JS
Nicolas Embleton, Advanced Angular JS
 
Open event (Drupalcamp Sunderland 2015)
Open event (Drupalcamp Sunderland 2015)Open event (Drupalcamp Sunderland 2015)
Open event (Drupalcamp Sunderland 2015)
 
The elastic stack on docker
The elastic stack on dockerThe elastic stack on docker
The elastic stack on docker
 
Ten practical ways to improve front-end performance
Ten practical ways to improve front-end performanceTen practical ways to improve front-end performance
Ten practical ways to improve front-end performance
 
Ingres For Oracle Users
Ingres For Oracle UsersIngres For Oracle Users
Ingres For Oracle Users
 
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012 Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
 
Everything You Should Know About the New Angular CLI
Everything You Should Know About the New Angular CLIEverything You Should Know About the New Angular CLI
Everything You Should Know About the New Angular CLI
 

Recently uploaded

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 

Recently uploaded (20)

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 

RUNDECK PRO - example acl policy convention

  • 1. RUNDECK PRO ACL Policy Convention Example
  • 2. Rundeck’s ACL benefits ● Rundeck is great for enabling self-service and improving collaboration between teams BUT… ○ InfoSec (“lock it down!”) ○ Compliance (“separation of concerns!”) ● Rundeck’s ACL lets you define policy so that you can determine who can do what, and where they can do it ○ Separates out key tasks like running jobs, viewing events/history, and writing jobs ○ Everything is logged and auditable, making Compliance, InfoSec, and Managers more comfortable
  • 3. About Policies Rundeck governs access using an ACL policy. Rundeck models capabilities as resources. Resources have actions like “read” and “run” A policy is a set of rules permitting or denying actions on a resource for a given user or group. Users and groups are managed in your user directory (LDAP)
  • 4. About Projects A project is a place for work activity. An application team might each have a project. A project can span one or more environments. A RUNDECK admin will create projects for their users
  • 5. Projects, Environments & Nodes Project activity happens across environments A node is a member of just one environment. Declare a Node attribute: “environment” DIT Development integration test UAT User acceptance test STAGE Final release and staging PROD Production operation
  • 6. Example Project Nodes Model <?xml version="1.0" encoding="UTF-8"?> <project> <node name="web1.DIT" tags="" hostname="web1.dit.domain" osFamily="unix" username="rundeck" environment="DIT" /> <node name="app1.DIT" tags="" hostname="app1.dit.domain" osFamily="unix" username="rundeck" environment="DIT" /> <node name="web1.UAT" tags="" hostname="web1.uat.domain" osFamily="unix" username="rundeck" environment="UAT" /> <node name="app1.UAT" tags="" hostname="app1.uat.domain" osFamily="unix" username="rundeck" environment="UAT" /> <node name="web1.STAGE" tags="" hostname="web1.stage.domain" osFamily="unix" username="rundeck" environment="STAGE" /> <node name="app1.STAGE" tags="" hostname="app1.stage.domain" osFamily="unix" username="rundeck" environment="STAGE" /> <node name="web1.PROD" tags="" hostname="web1.prod.domain" osFamily="unix" username="rundeck" environment="PROD" /> <node name="app1.PROD" tags="" hostname="app1.prod.domain" osFamily="unix" username="rundeck" environment="PROD" /> </project> A node in “PROD” environment
  • 7. Roles used in this example ● {TEAM}: Gives a team access to a Project(s) Then these Roles give permissions within the context of a Project... ● AUDIT: Activities (read) ● WRITE: Job writer (read, create, update, delete) ● RUN_STAGE: Jobs run on nodes in environments except PROD ● RUN_PROD: Jobs run on nodes in PROD These are only examples. Customize any roles you want!
  • 8. Matrix of roles & groups for a project AUDIT WRITE RUN_NON_PROD RUN_PROD Project A Project B Project C manager eng SRE
  • 9. Project-A Policy: Allow users in Team-C to access Project-C Project-B Project-C {TEAM} Grant access to a project A Team-C user > Note: “{TEAM}” is a placeholder for a real team name (eg, “Team-C”) “manager”
  • 10. {TEAM}.aclpolicy description: Given a user in group "{TEAM}" and for project name, {TEAM}, then allow action [read].' context: application: 'rundeck' for: project: - match: name: {TEAM} allow: [read] by: group: {TEAM} Grants the team access to their project > Note: “{TEAM}” is a placeholder for a real team name (eg, “Team-C”)
  • 11. Policy: AUDIT Allows: Read Events history history history Project A Project B Project ... AUDIT Read job execution history {TEAM} “manager”
  • 12. AUDIT.aclpolicy description: 'Users in "AUDIT" can [read] events and nodes.' context: project: '.*' for: resource: - equals: kind: event - allow: [read] node: - allow: [read] by: group: AUDIT Read any event Read any node
  • 13. Policy: WRITE Allows: create,read,update,delete WRITE.aclpolicy Jobs Jobs Jobs Project A Project B Project ... {TEAM} “eng”
  • 14. WRITE.aclpolicy description: Users in “WRITE” can change job definitions' context: project: '.*' for: resource: - equals: kind: job allow: [create,delete] job: - allow: [create,read,update,delete] by: group: WRITE Allow actions to change job definitions
  • 15. {TEAM} Policy: RUN_NON_PROD Allows: Read,Run,Kill for Jobs Allows: Read,Run for Nodes environment match: ’UAT|DIT|STAGE’ UAT DIT STAGE PROD RUN_NON_PROD.aclpolicy “eng”
  • 16. RUN_NON_PROD.aclpolicy description: 'Given user in group "RUN_NON_PROD" for any job, then allow [read,run,kill].' context: project: '.*' for: job: - allow: [read,run,kill] resource: - equals: kind: node allow: [read] node: - match: environment: 'DIT|UAT|STAGE' allow: [read,run] by: group: RUN_NON_PROD Just the non-PROD nodes
  • 17. {TEAM} DIT UAT STAGE PROD RUN_PROD.aclpolicy “SRE” Policy: RUN_PROD Allows: Read,Run,Kill for Jobs Allows: Read,Run for Nodes environment equals: ’PROD’
  • 18. RUN_PROD.aclpolicy description: 'Given user in group "RUN_PROD" and any job, then allow [read,run,kill].' context: project: '.*' for: job: - allow: [read,run,kill] resource: - equals: kind: node allow: [read] node: - equals: environment: 'PROD' allow: [read,run] by: group: 'RUN_PROD’ Just the PROD nodes
  • 19. Example tomcat-users.xml <tomcat-users> <role rolename="AUDIT" /><!-- sees history --> <role rolename="WRITE" /><!-- defines jobs --> <role rolename="RUN_STAGE"/><!-- runs jobs on non-PROD nodes --> <role rolename="RUN_PROD" /><!-- runs jobs on nodes in PROD --> <user username="manager" password="***" roles="AUDIT"/> <user username="eng" password="***" roles="AUDIT,RUN_STAGE"/> <user username="sre" password="***" roles="AUDIT,RUN_PROD"/> </tomcat-users>