2.4. AWS Secrets Manager에서 시크릿을 마운트하도록 SSCSI 드라이버 구성
				보안을 안전하게 저장하고 관리하려면 GitOps 워크플로우를 사용하고 Secrets Store Container Storage Interface (SSCSI) Driver Operator를 구성하여 AWS Secrets Manager의 시크릿을 OpenShift Container Platform의 CSI 볼륨에 마운트합니다. 예를 들어 /environments/dev/ 디렉터리에 있는 dev 네임스페이스 아래의 배포 Pod에 시크릿을 마운트하려고 합니다.
			
사전 요구 사항
- AWS Secrets Manager 리소스가 GitOps 리포지토리에 저장되어 있습니다.
프로세스
- 다음 명령을 실행하여 - csi-secrets-store-provider-aws서비스 계정에 대한 권한 권한을 부여합니다.- oc adm policy add-scc-to-user privileged -z csi-secrets-store-provider-aws -n openshift-cluster-csi-drivers - $ oc adm policy add-scc-to-user privileged -z csi-secrets-store-provider-aws -n openshift-cluster-csi-drivers- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 출력 예 - clusterrole.rbac.authorization.k8s.io/system:openshift:scc:privileged added: "csi-secrets-store-provider-aws" - clusterrole.rbac.authorization.k8s.io/system:openshift:scc:privileged added: "csi-secrets-store-provider-aws"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 서비스 계정에서 AWS 시크릿 오브젝트를 읽을 수 있는 권한을 부여합니다. - 인증 정보 요청이 네임스페이스 범위이므로 GitOps 리포지토리의 네임스페이스 범위 디렉터리에 - credentialsrequest-dir-aws폴더를 생성합니다. 예를 들어 다음 명령을 실행하여- /environments/dev/디렉터리에 있는- dev네임스페이스에- credentialsrequest-dir-aws폴더를 생성합니다.- mkdir credentialsrequest-dir-aws - $ mkdir credentialsrequest-dir-aws- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- /environments/dev/credentialsrequest-dir-aws/경로에서 인증 정보 요청에 대한 다음 구성으로 YAML 파일을 생성하여- dev네임스페이스의 배포 Pod에 보안을 마운트합니다.- credentialsrequest.yaml파일 예- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 작은 정보- 클러스터 리전을 찾으려면 다음 명령을 실행합니다. - oc get infrastructure cluster -o jsonpath='{.status.platformStatus.aws.region}'- $ oc get infrastructure cluster -o jsonpath='{.status.platformStatus.aws.region}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 출력 예 - us-west-2 - us-west-2- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 다음 명령을 실행하여 OIDC 공급자를 검색합니다. - oc get --raw=/.well-known/openid-configuration | jq -r '.issuer' - $ oc get --raw=/.well-known/openid-configuration | jq -r '.issuer'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 출력 예 - https://<oidc_provider_name> - https://<oidc_provider_name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 다음 단계에서 사용할 출력에서 OIDC - 공급자 이름 <oidc_provider_name>을 복사합니다.
- ccoctl툴을 사용하여 다음 명령을 실행하여 인증 정보 요청을 처리합니다.- ccoctl aws create-iam-roles \ --name my-role --region=<aws_region> \ --credentials-requests-dir=credentialsrequest-dir-aws \ --identity-provider-arn arn:aws:iam::<aws_account>:oidc-provider/<oidc_provider_name> --output-dir=credrequests-ccoctl-output- $ ccoctl aws create-iam-roles \ --name my-role --region=<aws_region> \ --credentials-requests-dir=credentialsrequest-dir-aws \ --identity-provider-arn arn:aws:iam::<aws_account>:oidc-provider/<oidc_provider_name> --output-dir=credrequests-ccoctl-output- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 출력 예 - 2023/05/15 18:10:34 Role arn:aws:iam::<aws_account_id>:role/my-role-my-namespace-aws-creds created 2023/05/15 18:10:34 Saved credentials configuration to: credrequests-ccoctl-output/manifests/my-namespace-aws-creds-credentials.yaml 2023/05/15 18:10:35 Updated Role policy for Role my-role-my-namespace-aws-creds - 2023/05/15 18:10:34 Role arn:aws:iam::<aws_account_id>:role/my-role-my-namespace-aws-creds created 2023/05/15 18:10:34 Saved credentials configuration to: credrequests-ccoctl-output/manifests/my-namespace-aws-creds-credentials.yaml 2023/05/15 18:10:35 Updated Role policy for Role my-role-my-namespace-aws-creds- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 다음 단계에서 사용할 출력에서 < - aws_role_arn>을 복사합니다. 예를 들어- arn:aws:iam::<aws_account_id>:role/my-role-my-namespace-aws-creds.
- AWS의 역할 정책을 확인하여 역할 정책의 < - aws_region>의 <aws_region>이 클러스터 리전과 일치하는지 확인합니다.- 역할 정책 예 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 다음 명령을 실행하여 서비스 계정을 ARN 역할과 바인딩합니다. - oc annotate -n <namespace> sa/<app_service_account> eks.amazonaws.com/role-arn="<aws_role_arn>" - $ oc annotate -n <namespace> sa/<app_service_account> eks.amazonaws.com/role-arn="<aws_role_arn>"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 명령 예 - oc annotate -n dev sa/default eks.amazonaws.com/role-arn="<aws_role_arn>" - $ oc annotate -n dev sa/default eks.amazonaws.com/role-arn="<aws_role_arn>"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 출력 예 - serviceaccount/default annotated - serviceaccount/default annotated- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 네임스페이스 범위의 - SecretProviderClass리소스를 생성하여 시크릿 저장소 공급자를 정의합니다. 예를 들어 GitOps 리포지토리의- /environments/dev/apps/app-taxi/services/taxi/base/config디렉터리에- SecretProviderClass리소스를 생성합니다.- 대상 배포가 GitOps 리포지토리에 있는 동일한 디렉터리에 - secret-provider-class-aws.yaml파일을 생성합니다.- secret-provider-class-aws.yaml의 예- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 이 YAML 파일을 GitOps 리포지토리로 내보낸 후 Argo CD UI의 대상 애플리케이션 페이지에 네임스페이스 범위의 - SecretProviderClass리소스가 채워져 있는지 확인합니다.참고- 애플리케이션의 동기화 정책이 - Auto로 설정되지 않은 경우 Argo CD UI에서 동기화를 클릭하여- SecretProviderClass리소스를 수동으로 동기화 할 수 있습니다.