作業 5 題目 : 請調整腳本去進行自動化的讀取 token、ca.crt、csr-test.key、csr-test.crt,並且於設定資料後切換 context,傳入參數不限方便使用即可。並練習利用 aquasecurity/kubectl-who-can 去挑選其他標的出來試試看。
參考答案 :
token_file="/var/run/secrets/kubernetes.io/serviceaccount/token"
ca_crt_file="/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"
token=`cat $token_file`
echo "kubectl in $1..."
echo "api server in $2..."
echo "client-key in $3..."
echo "client-certificate in $4..."
$1 config set-cluster cfc --server=$2 --certificate-authority=$ca_crt_file ;
$1 config set-context cfc --cluster=cfc ;
if [ -z $3 ] || [ -z $4 ] ; then
$1 config set-credentials user --token=$token ;
else
$1 config set-credentials user --client-key=$3 --client-certificate=$4 --embed-certs=true ;
fi
$1 config set-context cfc --user=user ;
$1 config use-context cfc ;
使用方式
sh [腳本名稱] /kubectl https://10.96.0.1 csr-test.key csr-test.crt ;
先安裝 aquasecurity/kubectl-who-can,然後這次目標設定為能夠列出 pod 權限的使用者。
mkdir kubectl-who-can && cd kubectl-who-can ;
wget https://github.com/aquasecurity/kubectl-who-can/releases/download/v0.4.0/kubectl-who-can_linux_x86_64.tar.gz ;
tar xvf kubectl-who-can_linux_x86_64.tar.gz ;
#發現 user system:kube-scheduler 可以執行
./kubectl-who-can get pods ;