먼저 authenticator:로 시작하는 라인을 찾고 다음과 같이 변경한다.


authenticator: PasswordAuthenticator 



이전과 같이 변경하면 클라이언트가 클러스터에 연결할 때 사용자 이름과 암호가 필요하다는 것을 카산드라에 알린다. 그러나 사용자가 로그인할 때마다 접근을 제한하지는 않는다. 접근을 제한하려면 권한을 활성화해야 한다. authorizer:로 시작하는 라인을 찾아서 다음과 같이 변경한다.


authorizer: CassandraAuthorizer 



이제 클러스터는 사용자에게 주어진 권한에 따라 로그인 사용자의 접근을 제한할 것이다. 해당 권한 설정을 적용하려면 카산드라 인스턴스를 재시작해야 한다.





사용자 계정, google을 설정한다.


CREATE USER 'google'

WITH PASSWORD 'strongpassword'

NOSUPERUSER;





system_auth 키 스페이스에서 roles 테이블에 접근해 슈퍼 유저와 기존 사용자 계정을 살펴볼 수 있다.


SELECT role, is_superuser FROM "system_auth"."roles";


키 스페이스 이름과 테이블 이름 사이에 마침표를 사용하면 USE 문으로 활성화한 키 스페이스와 상관없이 system_auth 키 스페이스를 살펴볼 것을 CQL에 알린다.


알다시피 사용자 계정은 system_auth.roles 테이블에 매우 투명하게 저장된다.



 role               | is_superuser

----------------+--------------

      cassandra |         True

google           |        False

(2 rows)





암호가 저장되는 위치와 방법이 궁금할 수 있을 것이다. 해당 정보는 동일 테이블인 system_auth.roles의 salted_hash 필드에 저장되어 있다. 암호는 일반 텍스트로 저장되지 않고 bcrypt 해시로 저장된다.




권한 목록은  다음과 같이 확인할 수 있다.


 SELECT * FROM system_auth.role_permissions;


 role           | resource                           | permissions

----------------+------------------------------------+--------------------------------

      cassandra |               roles/data_analytics | {'ALTER', 'AUTHORIZE', 'DROP'}

google |                     data/my_status |                     {'SELECT'}






참조 :

https://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/secureConfigNativeAuth.html


https://support.datastax.com/hc/en-us/articles/207932926-FAQ-How-to-recover-from-a-lost-superuser-password



Posted by '김용환'
,

go 앱을 docker빌드할 때 ENV를 쓰지 않아도 된다!!!




자세한 내용은 이곳을 참조했다.

https://hub.docker.com/_/golang/




Main.go 소스는 다음과 같다.


package main


import (

    "fmt"

)


func main() {

    fmt.Println("Hello World")

}





Dockerfile은 다음과 같다. 


FROM golang:onbuild


RUN mkdir /app

ADD . /app/

WORKDIR /app

RUN go build -o main .

CMD ["/app/main"]



이제 빌드와 실행을 해본다.



$ docker build -t example .

Sending build context to Docker daemon  4.096kB

Step 1/6 : FROM golang:onbuild

# Executing 3 build triggers...

Step 1/1 : COPY . /go/src/app

Step 1/1 : RUN go-wrapper download

 ---> Running in eb597cae57ef

+ exec go get -v -d

Step 1/1 : RUN go-wrapper install

 ---> Running in 3cc20f3cc840

+ exec go install -v

app

 ---> 11d942c55dfb

Removing intermediate container 4eca92f17e78

Removing intermediate container eb597cae57ef

Removing intermediate container 3cc20f3cc840

Step 2/6 : RUN mkdir /app

 ---> Running in 1035dea0ce0d

 ---> 9fbe4249fc32

Removing intermediate container 1035dea0ce0d

Step 3/6 : ADD . /app/

 ---> 8950d77f106e

Removing intermediate container d43b4043d9bf

Step 4/6 : WORKDIR /app

 ---> 465bff3b7275

Removing intermediate container d21a6bdc6c31

Step 5/6 : RUN go build -o main .

 ---> Running in 9e1c1b5a0123

 ---> 9e27407b57d4

Removing intermediate container 9e1c1b5a0123

Step 6/6 : CMD /app/main

 ---> Running in 4dbe90267d84

 ---> a8861bcaebad

Removing intermediate container 4dbe90267d84

Successfully built a8861bcaebad

Successfully tagged example:latest



실행 결과는 다음과 같다.


$ docker run -it --rm --name my-example example

Hello World

'go lang' 카테고리의 다른 글

[golang] imported and not used  (0) 2017.09.05
go 컨퍼런스 자료  (0) 2017.09.01
[golang] if 예제  (0) 2017.08.29
[golang] 반복문 - for / 문 예제  (0) 2017.08.29
[golang] 타입 확인하는 방법 - reflect.TypeOf  (0) 2017.08.29
Posted by '김용환'
,