--- title: Demo weight: 1100 description: Procedures for working with an etcd cluster icon: fa-solid fa-play categories: [Tutorial] upstream_link: "https://github.com/etcd-io/website/blob/824597935df6e95992ef61c07e3222f4f796ca6c/content/en/docs/v3.7/demo.md" aliases: [/etcd/demo/] --- This series of examples shows the basic procedures for working with an etcd cluster. ## Auth `auth`,`user`,`role` for authentication: ```shell export ETCDCTL_API=3 ENDPOINTS=localhost:2379 etcdctl --endpoints=${ENDPOINTS} role add root etcdctl --endpoints=${ENDPOINTS} role get root etcdctl --endpoints=${ENDPOINTS} user add root etcdctl --endpoints=${ENDPOINTS} user grant-role root root etcdctl --endpoints=${ENDPOINTS} user get root etcdctl --endpoints=${ENDPOINTS} role add role0 etcdctl --endpoints=${ENDPOINTS} role grant-permission role0 readwrite foo etcdctl --endpoints=${ENDPOINTS} user add user0 etcdctl --endpoints=${ENDPOINTS} user grant-role user0 role0 etcdctl --endpoints=${ENDPOINTS} auth enable # now all client requests go through auth etcdctl --endpoints=${ENDPOINTS} --user=user0:123 put foo bar etcdctl --endpoints=${ENDPOINTS} get foo # permission denied, user name is empty because the request does not issue an authentication request etcdctl --endpoints=${ENDPOINTS} --user=user0:123 get foo # user0 can read the key foo etcdctl --endpoints=${ENDPOINTS} --user=user0:123 get foo1 ```