9장 ECR에는 사람이 읽는 tag와 기계가 믿는 digest를 남긴다
repository를 만들고 scan-on-push와 tag immutability 정책을 조직 표준에 맞게 설정한다.
aws ecr create-repository
--repository-name flownote
--image-tag-mutability IMMUTABLE
--image-scanning-configuration scanOnPush=true
--region ap-northeast-2
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
REGISTRY="$ACCOUNT_ID.dkr.ecr.ap-northeast-2.amazonaws.com"
SHA=$(git rev-parse HEAD)
aws ecr get-login-password --region ap-northeast-2
| docker login --username AWS --password-stdin "$REGISTRY"
docker tag flownote:book "$REGISTRY/flownote:$SHA"
docker push "$REGISTRY/flownote:$SHA"
docker login password를 shell history에 쓰지 않고 stdin으로 전달한다. push 뒤 digest를 확인한다.
aws ecr describe-images --repository-name flownote
--image-ids imageTag="$SHA"
--query 'imageDetails[0].[imageDigest,imagePushedAt]' --output table
ECR basic scanning은 OS vulnerability를 중심으로 보고, enhanced scanning은 Inspector와 연동해 OS와 language package를 지속 평가한다. finding이 있다고 무조건 배포 금지하거나, 없다고 안전을 보증하지 않는다. severity·exploitability·노출 경로·수정 가능 version·예외 만료일을 정책으로 만든다.