ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 3

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 3

ಸೂಚನೆ. ಅನುವಾದ.: ಮೊದಲ ಭಾಗ ಈ ಸರಣಿಯು ಇಸ್ಟಿಯೊ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳಲು ಮತ್ತು ಅವುಗಳನ್ನು ಕ್ರಿಯೆಯಲ್ಲಿ ಪ್ರದರ್ಶಿಸಲು ಮೀಸಲಿಡಲಾಗಿದೆ, ರಷ್ಯಾ - ಉತ್ತಮವಾಗಿ ಟ್ಯೂನ್ ಮಾಡಿದ ರೂಟಿಂಗ್ ಮತ್ತು ನೆಟ್‌ವರ್ಕ್ ಟ್ರಾಫಿಕ್ ನಿರ್ವಹಣೆ. ಈಗ ನಾವು ಭದ್ರತೆಯ ಬಗ್ಗೆ ಮಾತನಾಡುತ್ತೇವೆ: ಅದಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಮೂಲಭೂತ ಕಾರ್ಯಗಳನ್ನು ಪ್ರದರ್ಶಿಸಲು, ಲೇಖಕರು Auth0 ಗುರುತಿನ ಸೇವೆಯನ್ನು ಬಳಸುತ್ತಾರೆ, ಆದರೆ ಇತರ ಪೂರೈಕೆದಾರರನ್ನು ಇದೇ ರೀತಿಯಲ್ಲಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಬಹುದು.

ನಾವು Kubernetes ಕ್ಲಸ್ಟರ್ ಅನ್ನು ಹೊಂದಿಸಿದ್ದೇವೆ, ಅದರಲ್ಲಿ ನಾವು Istio ಅನ್ನು ನಿಯೋಜಿಸಿದ್ದೇವೆ ಮತ್ತು Istio ನ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಪ್ರದರ್ಶಿಸಲು ಒಂದು ಉದಾಹರಣೆ ಮೈಕ್ರೋಸರ್ವೀಸ್ ಅಪ್ಲಿಕೇಶನ್, ಸೆಂಟಿಮೆಂಟ್ ಅನಾಲಿಸಿಸ್.

Istio ನೊಂದಿಗೆ, ನಾವು ನಮ್ಮ ಸೇವೆಗಳನ್ನು ಚಿಕ್ಕದಾಗಿ ಇರಿಸಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಾಯಿತು ಏಕೆಂದರೆ ಅವರು ಮರುಪ್ರಯತ್ನಗಳು, ಸಮಯ ಮೀರುವಿಕೆಗಳು, ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್‌ಗಳು, ಟ್ರೇಸಿಂಗ್, ಮಾನಿಟರಿಂಗ್‌ನಂತಹ ಲೇಯರ್‌ಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಅಗತ್ಯವಿಲ್ಲ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ನಾವು ಸುಧಾರಿತ ಪರೀಕ್ಷೆ ಮತ್ತು ನಿಯೋಜನೆ ತಂತ್ರಗಳನ್ನು ಬಳಸಿದ್ದೇವೆ: A/B ಪರೀಕ್ಷೆ, ಮಿರರಿಂಗ್ ಮತ್ತು ಕ್ಯಾನರಿ ರೋಲ್‌ಔಟ್‌ಗಳು.

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 3

ಹೊಸ ವಸ್ತುವಿನಲ್ಲಿ, ನಾವು ವ್ಯವಹಾರ ಮೌಲ್ಯದ ಹಾದಿಯಲ್ಲಿ ಅಂತಿಮ ಪದರಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುತ್ತೇವೆ: ದೃಢೀಕರಣ ಮತ್ತು ಅಧಿಕಾರ - ಮತ್ತು ಇಸ್ಟಿಯೊದಲ್ಲಿ ಇದು ನಿಜವಾದ ಸಂತೋಷವಾಗಿದೆ!

ಇಸ್ಟಿಯೊದಲ್ಲಿ ದೃಢೀಕರಣ ಮತ್ತು ದೃಢೀಕರಣ

ದೃಢೀಕರಣ ಮತ್ತು ದೃಢೀಕರಣದಿಂದ ನಾನು ಸ್ಫೂರ್ತಿ ಪಡೆಯುತ್ತೇನೆ ಎಂದು ನಾನು ಎಂದಿಗೂ ನಂಬುತ್ತಿರಲಿಲ್ಲ. ಈ ವಿಷಯಗಳನ್ನು ಮೋಜು ಮಾಡಲು ಮತ್ತು ಇನ್ನೂ ಹೆಚ್ಚಾಗಿ, ನಿಮಗೆ ಸ್ಪೂರ್ತಿದಾಯಕವಾಗಿಸಲು ಇಸ್ಟಿಯೊ ತಂತ್ರಜ್ಞಾನದ ದೃಷ್ಟಿಕೋನದಿಂದ ಏನು ನೀಡಬಹುದು?

ಉತ್ತರ ಸರಳವಾಗಿದೆ: ಇಸ್ಟಿಯೊ ಈ ಸಾಮರ್ಥ್ಯಗಳ ಜವಾಬ್ದಾರಿಯನ್ನು ನಿಮ್ಮ ಸೇವೆಗಳಿಂದ ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿಗೆ ವರ್ಗಾಯಿಸುತ್ತದೆ. ವಿನಂತಿಗಳು ಸೇವೆಗಳನ್ನು ತಲುಪುವ ಹೊತ್ತಿಗೆ, ಅವುಗಳನ್ನು ಈಗಾಗಲೇ ದೃಢೀಕರಿಸಲಾಗಿದೆ ಮತ್ತು ಅಧಿಕೃತಗೊಳಿಸಲಾಗಿದೆ, ಆದ್ದರಿಂದ ನೀವು ಮಾಡಬೇಕಾಗಿರುವುದು ವ್ಯಾಪಾರ-ಉಪಯುಕ್ತ ಕೋಡ್ ಅನ್ನು ಬರೆಯುವುದು.

ಚೆನ್ನಾಗಿದೆಯೇ? ಒಳಗೆ ನೋಡೋಣ!

Auth0 ನೊಂದಿಗೆ ದೃಢೀಕರಣ

ಗುರುತು ಮತ್ತು ಪ್ರವೇಶ ನಿರ್ವಹಣೆಗಾಗಿ ಸರ್ವರ್‌ನಂತೆ, ನಾವು Auth0 ಅನ್ನು ಬಳಸುತ್ತೇವೆ, ಇದು ಪ್ರಾಯೋಗಿಕ ಆವೃತ್ತಿಯನ್ನು ಹೊಂದಿದೆ, ಬಳಸಲು ಅರ್ಥಗರ್ಭಿತವಾಗಿದೆ ಮತ್ತು ನಾನು ಅದನ್ನು ಸರಳವಾಗಿ ಇಷ್ಟಪಡುತ್ತೇನೆ. ಆದಾಗ್ಯೂ, ಅದೇ ತತ್ವಗಳನ್ನು ಬೇರೆ ಯಾವುದಕ್ಕೂ ಅನ್ವಯಿಸಬಹುದು OpenID ಕನೆಕ್ಟ್ ಅಳವಡಿಕೆಗಳು: ಕೀಕ್ಲೋಕ್, ಐಡೆಂಟಿಟಿ ಸರ್ವರ್ ಮತ್ತು ಇನ್ನೂ ಅನೇಕ.

ಪ್ರಾರಂಭಿಸಲು, ಹೋಗಿ Auth0 ಪೋರ್ಟಲ್ ನಿಮ್ಮ ಖಾತೆಯೊಂದಿಗೆ, ಬಾಡಿಗೆದಾರರನ್ನು ರಚಿಸಿ (ಹಿಡುವಳಿದಾರ - "ಬಾಡಿಗೆದಾರ", ಪ್ರತ್ಯೇಕತೆಯ ತಾರ್ಕಿಕ ಘಟಕ, ಹೆಚ್ಚಿನ ವಿವರಗಳಿಗಾಗಿ ನೋಡಿ ದಸ್ತಾವೇಜನ್ನು - ಅಂದಾಜು ಅನುವಾದ.) ಮತ್ತು ಹೋಗಿ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು > ಡೀಫಾಲ್ಟ್ ಅಪ್ಲಿಕೇಶನ್ಆಯ್ಕೆ ಡೊಮೇನ್, ಕೆಳಗಿನ ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ನಲ್ಲಿ ತೋರಿಸಿರುವಂತೆ:

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 3

ಫೈಲ್‌ನಲ್ಲಿ ಈ ಡೊಮೇನ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ resource-manifests/istio/security/auth-policy.yaml (ಮೂಲ):

apiVersion: authentication.istio.io/v1alpha1
kind: Policy
metadata:
  name: auth-policy
spec:
  targets:
  - name: sa-web-app
  - name: sa-feedback
  origins:
  - jwt:
      issuer: "https://{YOUR_DOMAIN}/"
      jwksUri: "https://{YOUR_DOMAIN}/.well-known/jwks.json"
  principalBinding: USE_ORIGIN

ಅಂತಹ ಸಂಪನ್ಮೂಲದೊಂದಿಗೆ, ಪೈಲಟ್ (ಇಸ್ಟಿಯೊದಲ್ಲಿನ ಮೂರು ಮೂಲಭೂತ ಕಂಟ್ರೋಲ್ ಪ್ಲೇನ್ ಘಟಕಗಳಲ್ಲಿ ಒಂದು - ಅಂದಾಜು. ಅನುವಾದ.) ಸೇವೆಗಳಿಗೆ ಫಾರ್ವರ್ಡ್ ಮಾಡುವ ಮೊದಲು ವಿನಂತಿಗಳನ್ನು ದೃಢೀಕರಿಸಲು ಎನ್ವಾಯ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುತ್ತದೆ: sa-web-app и sa-feedback. ಅದೇ ಸಮಯದಲ್ಲಿ, ಸೇವಾ ರಾಯಭಾರಿಗಳಿಗೆ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ವಯಿಸುವುದಿಲ್ಲ sa-frontend, ಮುಂಭಾಗವನ್ನು ದೃಢೀಕರಿಸದೆ ಬಿಡಲು ನಮಗೆ ಅವಕಾಶ ನೀಡುತ್ತದೆ. ನೀತಿಯನ್ನು ಅನ್ವಯಿಸಲು, ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸಿ:

$ kubectl apply -f resource-manifests/istio/security/auth-policy.yaml
policy.authentication.istio.io “auth-policy” created

ಪುಟಕ್ಕೆ ಹಿಂತಿರುಗಿ ಮತ್ತು ವಿನಂತಿಯನ್ನು ಮಾಡಿ - ಅದು ಸ್ಥಿತಿಯೊಂದಿಗೆ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ ಎಂದು ನೀವು ನೋಡುತ್ತೀರಿ 401 ಅನಧಿಕೃತ. ಈಗ Auth0 ನೊಂದಿಗೆ ದೃಢೀಕರಿಸಲು ಮುಂಭಾಗದ ಬಳಕೆದಾರರನ್ನು ಮರುನಿರ್ದೇಶಿಸೋಣ.

Auth0 ನೊಂದಿಗೆ ವಿನಂತಿಗಳನ್ನು ದೃಢೀಕರಿಸುವುದು

ಅಂತಿಮ ಬಳಕೆದಾರರ ವಿನಂತಿಗಳನ್ನು ದೃಢೀಕರಿಸಲು, ನೀವು Auth0 ನಲ್ಲಿ API ಅನ್ನು ರಚಿಸುವ ಅಗತ್ಯವಿದೆ ಅದು ಪ್ರಮಾಣೀಕೃತ ಸೇವೆಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ (ವಿಮರ್ಶೆಗಳು, ವಿವರಗಳು ಮತ್ತು ರೇಟಿಂಗ್‌ಗಳು). API ರಚಿಸಲು, ಇಲ್ಲಿಗೆ ಹೋಗಿ Auth0 ಪೋರ್ಟಲ್ > API ಗಳು > API ರಚಿಸಿ ಮತ್ತು ಫಾರ್ಮ್ ಅನ್ನು ಭರ್ತಿ ಮಾಡಿ:

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 3

ಇಲ್ಲಿರುವ ಪ್ರಮುಖ ಮಾಹಿತಿಯೆಂದರೆ ಗುರುತಿಸುವಿಕೆ, ಇದನ್ನು ನಾವು ನಂತರ ಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ಬಳಸುತ್ತೇವೆ. ಅದನ್ನು ಹೀಗೆ ಬರೆಯೋಣ:

  • ಪ್ರೇಕ್ಷಕರು: {YOUR_AUDIENCE}

ನಮಗೆ ಅಗತ್ಯವಿರುವ ಉಳಿದ ವಿವರಗಳು ವಿಭಾಗದಲ್ಲಿ Auth0 ಪೋರ್ಟಲ್‌ನಲ್ಲಿವೆ ಅಪ್ಲಿಕೇಶನ್ಗಳು - ಆಯ್ಕೆ ಮಾಡಿ ಪರೀಕ್ಷಾ ಅಪ್ಲಿಕೇಶನ್ (API ಜೊತೆಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸಲಾಗಿದೆ).

ಇಲ್ಲಿ ನಾವು ಬರೆಯುತ್ತೇವೆ:

  • ಡೊಮೇನ್: {YOUR_DOMAIN}
  • ಕ್ಲೈಂಟ್ ಐಡಿ: {YOUR_CLIENT_ID}

ಗೆ ಸ್ಕ್ರಾಲ್ ಮಾಡಿ ಪರೀಕ್ಷಾ ಅಪ್ಲಿಕೇಶನ್ ಪಠ್ಯ ಕ್ಷೇತ್ರಕ್ಕೆ ಅನುಮತಿಸಲಾದ ಕಾಲ್‌ಬ್ಯಾಕ್ URL ಗಳು (ಕಾಲ್‌ಬ್ಯಾಕ್‌ಗಾಗಿ ಪರಿಹರಿಸಲಾದ URL ಗಳು), ಇದರಲ್ಲಿ ದೃಢೀಕರಣ ಪೂರ್ಣಗೊಂಡ ನಂತರ ಕರೆ ಕಳುಹಿಸಬೇಕಾದ URL ಅನ್ನು ನಾವು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತೇವೆ. ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ ಇದು:

http://{EXTERNAL_IP}/callback

ಮತ್ತು ಫಾರ್ ಅನುಮತಿಸಲಾದ ಲಾಗ್‌ಔಟ್ URL ಗಳು (ಲಾಗ್ ಔಟ್ ಮಾಡಲು ಅನುಮತಿಸಲಾದ URL ಗಳು) ಸೇರಿಸಿ:

http://{EXTERNAL_IP}/logout

ಮುಂಭಾಗಕ್ಕೆ ಹೋಗೋಣ.

ಮುಂಭಾಗದ ನವೀಕರಣ

ಶಾಖೆಗೆ ಬದಲಿಸಿ auth0 ರೆಪೊಸಿಟೋರಿಯಾ [istio-mastery]. ಈ ಶಾಖೆಯಲ್ಲಿ, ದೃಢೀಕರಣಕ್ಕಾಗಿ ಬಳಕೆದಾರರನ್ನು Auth0 ಗೆ ಮರುನಿರ್ದೇಶಿಸಲು ಮತ್ತು ಇತರ ಸೇವೆಗಳಿಗೆ ವಿನಂತಿಗಳಲ್ಲಿ JWT ಟೋಕನ್ ಅನ್ನು ಬಳಸಲು ಮುಂಭಾಗದ ಕೋಡ್ ಅನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ. ಎರಡನೆಯದನ್ನು ಈ ಕೆಳಗಿನಂತೆ ಅಳವಡಿಸಲಾಗಿದೆ (App.js):

analyzeSentence() {
    fetch('/sentiment', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'Authorization': `Bearer ${auth.getAccessToken()}` // Access Token
        },
        body: JSON.stringify({ sentence: this.textField.getValue() })
    })
        .then(response => response.json())
        .then(data => this.setState(data));
}

Auth0 ನಲ್ಲಿ ಬಾಡಿಗೆದಾರರ ಡೇಟಾವನ್ನು ಬಳಸಲು ಮುಂಭಾಗವನ್ನು ಬದಲಾಯಿಸಲು, ತೆರೆಯಿರಿ sa-frontend/src/services/Auth.js ಮತ್ತು ನಾವು ಮೇಲೆ ಬರೆದ ಮೌಲ್ಯಗಳನ್ನು ಅದರಲ್ಲಿ ಬದಲಾಯಿಸಿ (Auth.js):

const Config = {
    clientID: '{YOUR_CLIENT_ID}',
    domain:'{YOUR_DOMAIN}',
    audience: '{YOUR_AUDIENCE}',
    ingressIP: '{EXTERNAL_IP}' // Используется для редиректа после аутентификации
}

ಅಪ್ಲಿಕೇಶನ್ ಸಿದ್ಧವಾಗಿದೆ. ಮಾಡಿದ ಬದಲಾವಣೆಗಳನ್ನು ನಿರ್ಮಿಸುವಾಗ ಮತ್ತು ನಿಯೋಜಿಸುವಾಗ ಕೆಳಗಿನ ಆಜ್ಞೆಗಳಲ್ಲಿ ನಿಮ್ಮ ಡಾಕರ್ ಐಡಿಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ:

$ docker build -f sa-frontend/Dockerfile 
 -t $DOCKER_USER_ID/sentiment-analysis-frontend:istio-auth0 
 sa-frontend

$ docker push $DOCKER_USER_ID/sentiment-analysis-frontend:istio-auth0

$ kubectl set image deployment/sa-frontend 
 sa-frontend=$DOCKER_USER_ID/sentiment-analysis-frontend:istio-auth0

ಅಪ್ಲಿಕೇಶನ್ ಪ್ರಯತ್ನಿಸಿ! ನಿಮ್ಮನ್ನು Auth0 ಗೆ ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತದೆ, ಅಲ್ಲಿ ನೀವು ಲಾಗ್ ಇನ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ (ಅಥವಾ ನೋಂದಾಯಿಸಿಕೊಳ್ಳಬೇಕು), ಅದರ ನಂತರ ನಿಮ್ಮನ್ನು ಈಗಾಗಲೇ ದೃಢೀಕರಿಸಿದ ವಿನಂತಿಗಳನ್ನು ಮಾಡಿದ ಪುಟಕ್ಕೆ ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ. ಲೇಖನದ ಮೊದಲ ಭಾಗಗಳಲ್ಲಿ ಉಲ್ಲೇಖಿಸಲಾದ ಆಜ್ಞೆಗಳನ್ನು ನೀವು ಸುರುಳಿಯೊಂದಿಗೆ ಪ್ರಯತ್ನಿಸಿದರೆ, ನೀವು ಕೋಡ್ ಅನ್ನು ಪಡೆಯುತ್ತೀರಿ 401 ಸ್ಥಿತಿ ಕೋಡ್, ವಿನಂತಿಯನ್ನು ಅಧಿಕೃತಗೊಳಿಸಲಾಗಿಲ್ಲ ಎಂದು ಸಂಕೇತಿಸುತ್ತದೆ.

ಮುಂದಿನ ಹಂತವನ್ನು ತೆಗೆದುಕೊಳ್ಳೋಣ - ವಿನಂತಿಗಳನ್ನು ಅಧಿಕೃತಗೊಳಿಸಿ.

Auth0 ನೊಂದಿಗೆ ದೃಢೀಕರಣ

ಬಳಕೆದಾರರು ಯಾರೆಂದು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ದೃಢೀಕರಣವು ನಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಆದರೆ ಅವರು ಏನು ಪ್ರವೇಶವನ್ನು ಹೊಂದಿದ್ದಾರೆಂದು ತಿಳಿಯಲು ದೃಢೀಕರಣದ ಅಗತ್ಯವಿದೆ. ಇದಕ್ಕೂ ಇಸ್ಟಿಯೊ ಉಪಕರಣಗಳನ್ನು ನೀಡುತ್ತದೆ.

ಉದಾಹರಣೆಯಾಗಿ, ನಾವು ಎರಡು ಬಳಕೆದಾರರ ಗುಂಪುಗಳನ್ನು ರಚಿಸೋಣ (ಕೆಳಗಿನ ರೇಖಾಚಿತ್ರವನ್ನು ನೋಡಿ):

  • ಬಳಕೆದಾರರು (ಬಳಕೆದಾರರು) — SA-WebApp ಮತ್ತು SA-Frontend ಸೇವೆಗಳಿಗೆ ಮಾತ್ರ ಪ್ರವೇಶದೊಂದಿಗೆ;
  • ಮಾಡರೇಟರ್‌ಗಳು (ಮಾಡರೇಟರ್‌ಗಳು) - ಎಲ್ಲಾ ಮೂರು ಸೇವೆಗಳಿಗೆ ಪ್ರವೇಶದೊಂದಿಗೆ.

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 3
ಅಧಿಕಾರ ಪರಿಕಲ್ಪನೆ

ಈ ಗುಂಪುಗಳನ್ನು ರಚಿಸಲು, ನಾವು Auth0 ದೃಢೀಕರಣ ವಿಸ್ತರಣೆಯನ್ನು ಬಳಸುತ್ತೇವೆ ಮತ್ತು ಅವರಿಗೆ ವಿವಿಧ ಹಂತದ ಪ್ರವೇಶವನ್ನು ಒದಗಿಸಲು Istio ಅನ್ನು ಬಳಸುತ್ತೇವೆ.

Auth0 ದೃಢೀಕರಣದ ಸ್ಥಾಪನೆ ಮತ್ತು ಸಂರಚನೆ

Auth0 ಪೋರ್ಟಲ್‌ನಲ್ಲಿ, ವಿಸ್ತರಣೆಗಳಿಗೆ ಹೋಗಿ (ವಿಸ್ತರಣೆಗಳು) ಮತ್ತು ಸ್ಥಾಪಿಸಿ Auth0 ದೃಢೀಕರಣ. ಅನುಸ್ಥಾಪನೆಯ ನಂತರ, ಹೋಗಿ ಅಧಿಕಾರ ವಿಸ್ತರಣೆ, ಮತ್ತು ಅಲ್ಲಿ - ಮೇಲಿನ ಬಲಭಾಗದಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡುವ ಮೂಲಕ ಮತ್ತು ಸೂಕ್ತವಾದ ಮೆನು ಆಯ್ಕೆಯನ್ನು ಆರಿಸುವ ಮೂಲಕ ಹಿಡುವಳಿದಾರನ ಕಾನ್ಫಿಗರೇಶನ್‌ಗೆ (ಸಂರಚನೆ). ಗುಂಪುಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ (ಗುಂಪುಗಳು) ಮತ್ತು ಪ್ರಕಟಿಸುವ ನಿಯಮ ಬಟನ್ ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡಿ (ನಿಯಮವನ್ನು ಪ್ರಕಟಿಸಿ).

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 3

ಗುಂಪುಗಳನ್ನು ರಚಿಸುವುದು

ದೃಢೀಕರಣ ವಿಸ್ತರಣೆಯಲ್ಲಿ ಹೋಗಿ ಗುಂಪುಗಳು ಮತ್ತು ಒಂದು ಗುಂಪನ್ನು ರಚಿಸಿ ಮಾಡರೇಟರ್ಗಳು. ನಾವು ಎಲ್ಲಾ ದೃಢೀಕೃತ ಬಳಕೆದಾರರನ್ನು ಸಾಮಾನ್ಯ ಬಳಕೆದಾರರಂತೆ ಪರಿಗಣಿಸುವುದರಿಂದ, ಅವರಿಗೆ ಹೆಚ್ಚುವರಿ ಗುಂಪನ್ನು ರಚಿಸುವ ಅಗತ್ಯವಿಲ್ಲ.

ಗುಂಪನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮಾಡರೇಟರ್ಗಳು, ಒತ್ತಿ ಸದಸ್ಯರನ್ನು ಸೇರಿಸಿ, ನಿಮ್ಮ ಮುಖ್ಯ ಖಾತೆಯನ್ನು ಸೇರಿಸಿ. ಕೆಲವು ಬಳಕೆದಾರರಿಗೆ ಪ್ರವೇಶವನ್ನು ನಿರಾಕರಿಸಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಯಾವುದೇ ಗುಂಪು ಇಲ್ಲದೆ ಬಿಡಿ. (ಹೊಸ ಬಳಕೆದಾರರನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಇದರ ಮೂಲಕ ರಚಿಸಬಹುದು Auth0 ಪೋರ್ಟಲ್ > ಬಳಕೆದಾರರು > ಬಳಕೆದಾರರನ್ನು ರಚಿಸಿ.)

ಪ್ರವೇಶ ಟೋಕನ್‌ಗೆ ಗುಂಪು ಹಕ್ಕು ಸೇರಿಸಿ

ಬಳಕೆದಾರರನ್ನು ಗುಂಪುಗಳಿಗೆ ಸೇರಿಸಲಾಗಿದೆ, ಆದರೆ ಈ ಮಾಹಿತಿಯು ಪ್ರವೇಶ ಟೋಕನ್‌ಗಳಲ್ಲಿಯೂ ಪ್ರತಿಫಲಿಸಬೇಕು. OpenID ಕನೆಕ್ಟ್ ಅನ್ನು ಅನುಸರಿಸಲು ಮತ್ತು ಅದೇ ಸಮಯದಲ್ಲಿ ನಮಗೆ ಅಗತ್ಯವಿರುವ ಗುಂಪುಗಳನ್ನು ಹಿಂತಿರುಗಿಸಲು, ಟೋಕನ್ ತನ್ನದೇ ಆದದನ್ನು ಸೇರಿಸುವ ಅಗತ್ಯವಿದೆ ಕಸ್ಟಮ್ ಹಕ್ಕು. Auth0 ನಿಯಮಗಳ ಮೂಲಕ ಅಳವಡಿಸಲಾಗಿದೆ.

ನಿಯಮವನ್ನು ರಚಿಸಲು, Auth0 ಪೋರ್ಟಲ್‌ಗೆ ಹೋಗಿ ನಿಯಮಗಳು, ಒತ್ತಿ ನಿಯಮವನ್ನು ರಚಿಸಿ ಮತ್ತು ಟೆಂಪ್ಲೇಟ್‌ಗಳಿಂದ ಖಾಲಿ ನಿಯಮವನ್ನು ಆಯ್ಕೆಮಾಡಿ.

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 3

ಕೆಳಗಿನ ಕೋಡ್ ಅನ್ನು ನಕಲಿಸಿ ಮತ್ತು ಅದನ್ನು ಹೊಸ ನಿಯಮವಾಗಿ ಉಳಿಸಿ ಗುಂಪು ಹಕ್ಕು ಸೇರಿಸಿ (namespacedGroup.js):

function (user, context, callback) {
    context.accessToken['https://sa.io/group'] = user.groups[0];
    return callback(null, user, context);
}

ಹೇಳಿಕೆಯನ್ನು: ಈ ಕೋಡ್ ಅಧಿಕೃತ ವಿಸ್ತರಣೆಯಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಮೊದಲ ಬಳಕೆದಾರ ಗುಂಪನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಕಸ್ಟಮ್ ಕ್ಲೈಮ್‌ನಂತೆ ಪ್ರವೇಶ ಟೋಕನ್‌ಗೆ ಸೇರಿಸುತ್ತದೆ (ಅದರ ನೇಮ್‌ಸ್ಪೇಸ್ ಅಡಿಯಲ್ಲಿ, Auth0 ಗೆ ಅಗತ್ಯವಿರುವಂತೆ).

ಪುಟಕ್ಕೆ ಹಿಂತಿರುಗಿ ನಿಯಮಗಳು ಮತ್ತು ನೀವು ಈ ಕೆಳಗಿನ ಕ್ರಮದಲ್ಲಿ ಎರಡು ನಿಯಮಗಳನ್ನು ಬರೆದಿರುವಿರಿ ಎಂಬುದನ್ನು ಪರಿಶೀಲಿಸಿ:

  • auth0-ಅಧಿಕಾರ-ವಿಸ್ತರಣೆ
  • ಗುಂಪು ಹಕ್ಕು ಸೇರಿಸಿ

ಆದೇಶವು ಮುಖ್ಯವಾಗಿದೆ ಏಕೆಂದರೆ ಗುಂಪು ಕ್ಷೇತ್ರವು ನಿಯಮವನ್ನು ಅಸಮಕಾಲಿಕವಾಗಿ ಸ್ವೀಕರಿಸುತ್ತದೆ auth0-ಅಧಿಕಾರ-ವಿಸ್ತರಣೆ ಮತ್ತು ಅದರ ನಂತರ ಅದನ್ನು ಎರಡನೇ ನಿಯಮದಿಂದ ಕ್ಲೈಮ್ ಆಗಿ ಸೇರಿಸಲಾಗುತ್ತದೆ. ಫಲಿತಾಂಶವು ಈ ರೀತಿಯ ಪ್ರವೇಶ ಟೋಕನ್ ಆಗಿದೆ:

{
 "https://sa.io/group": "Moderators",
 "iss": "https://sentiment-analysis.eu.auth0.com/",
 "sub": "google-oauth2|196405271625531691872"
 // [сокращено для наглядности]
}

ಈಗ ನೀವು ಬಳಕೆದಾರರ ಪ್ರವೇಶವನ್ನು ಪರಿಶೀಲಿಸಲು ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿಯನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ, ಇದಕ್ಕಾಗಿ ಗುಂಪನ್ನು ಕ್ಲೈಮ್‌ನಿಂದ ಎಳೆಯಲಾಗುತ್ತದೆ (https://sa.io/group) ಹಿಂತಿರುಗಿದ ಪ್ರವೇಶ ಟೋಕನ್‌ನಲ್ಲಿ. ಲೇಖನದ ಮುಂದಿನ ವಿಭಾಗಕ್ಕೆ ಇದು ವಿಷಯವಾಗಿದೆ.

ಇಸ್ಟಿಯೊದಲ್ಲಿ ದೃಢೀಕರಣ ಸಂರಚನೆ

ಕೆಲಸ ಮಾಡಲು ಅಧಿಕಾರಕ್ಕಾಗಿ, ನೀವು Istio ಗಾಗಿ RBAC ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬೇಕು. ಇದನ್ನು ಮಾಡಲು, ನಾವು ಈ ಕೆಳಗಿನ ಸಂರಚನೆಯನ್ನು ಬಳಸುತ್ತೇವೆ:

apiVersion: "rbac.istio.io/v1alpha1"
kind: RbacConfig
metadata:
  name: default
spec:
  mode: 'ON_WITH_INCLUSION'                     # 1
  inclusion:
    services:                                   # 2
    - "sa-frontend.default.svc.cluster.local"
    - "sa-web-app.default.svc.cluster.local"
    - "sa-feedback.default.svc.cluster.local" 

ವಿವರಣೆಗಳು:

  • 1 — ಕ್ಷೇತ್ರದಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಲಾದ ಸೇವೆಗಳು ಮತ್ತು ನೇಮ್‌ಸ್ಪೇಸ್‌ಗಳಿಗೆ ಮಾತ್ರ RBAC ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ Inclusion;
  • 2 - ನಾವು ನಮ್ಮ ಸೇವೆಗಳ ಪಟ್ಟಿಯನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತೇವೆ.

ಕೆಳಗಿನ ಆಜ್ಞೆಯೊಂದಿಗೆ ಸಂರಚನೆಯನ್ನು ಅನ್ವಯಿಸೋಣ:

$ kubectl apply -f resource-manifests/istio/security/enable-rbac.yaml
rbacconfig.rbac.istio.io/default created

ಎಲ್ಲಾ ಸೇವೆಗಳಿಗೆ ಈಗ ಪಾತ್ರ-ಆಧಾರಿತ ಪ್ರವೇಶ ನಿಯಂತ್ರಣದ ಅಗತ್ಯವಿದೆ. ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ಎಲ್ಲಾ ಸೇವೆಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ನಿಷೇಧಿಸಲಾಗಿದೆ ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ RBAC: access denied. ಈಗ ಅಧಿಕೃತ ಬಳಕೆದಾರರಿಗೆ ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸೋಣ.

ಸಾಮಾನ್ಯ ಬಳಕೆದಾರರಿಗೆ ಪ್ರವೇಶ ಸಂರಚನೆ

ಎಲ್ಲಾ ಬಳಕೆದಾರರು SA-Frontend ಮತ್ತು SA-WebApp ಸೇವೆಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರಬೇಕು. ಕೆಳಗಿನ ಇಸ್ಟಿಯೊ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗಿದೆ:

  • ಸೇವಾ ಪಾತ್ರ - ಬಳಕೆದಾರರು ಹೊಂದಿರುವ ಹಕ್ಕುಗಳನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ;
  • ಸರ್ವಿಸ್ ರೋಲ್ ಬೈಂಡಿಂಗ್ - ಈ ಸೇವಾ ಪಾತ್ರ ಯಾರಿಗೆ ಸೇರಿದೆ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ.

ಸಾಮಾನ್ಯ ಬಳಕೆದಾರರಿಗೆ ನಾವು ಕೆಲವು ಸೇವೆಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸುತ್ತೇವೆ (servicerole.yaml):

apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRole
metadata:
  name: regular-user
  namespace: default
spec:
  rules:
  - services: 
    - "sa-frontend.default.svc.cluster.local" 
    - "sa-web-app.default.svc.cluster.local"
    paths: ["*"]
    methods: ["*"]

ಮತ್ತು ಮೂಲಕ regular-user-binding ಎಲ್ಲಾ ಪುಟ ಸಂದರ್ಶಕರಿಗೆ ServiceRole ಅನ್ನು ಅನ್ವಯಿಸಿ (ನಿಯಮಿತ-ಬಳಕೆದಾರ-ಸೇವೆ-role-binding.yaml):

apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRoleBinding
metadata:
  name: regular-user-binding
  namespace: default
spec:
  subjects:
  - user: "*"
  roleRef:
    kind: ServiceRole
    name: "regular-user"

"ಎಲ್ಲಾ ಬಳಕೆದಾರರು" ಎಂದರೆ ಪ್ರಮಾಣೀಕರಿಸದ ಬಳಕೆದಾರರು SA WebApp ಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರುತ್ತಾರೆಯೇ? ಇಲ್ಲ, ನೀತಿಯು JWT ಟೋಕನ್‌ನ ಸಿಂಧುತ್ವವನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ.

ಸಂರಚನೆಗಳನ್ನು ಅನ್ವಯಿಸೋಣ:

$ kubectl apply -f resource-manifests/istio/security/user-role.yaml
servicerole.rbac.istio.io/regular-user created
servicerolebinding.rbac.istio.io/regular-user-binding created

ಮಾಡರೇಟರ್‌ಗಳಿಗೆ ಪ್ರವೇಶ ಸಂರಚನೆ

ಮಾಡರೇಟರ್‌ಗಳಿಗಾಗಿ, ನಾವು ಎಲ್ಲಾ ಸೇವೆಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಬಯಸುತ್ತೇವೆ (mod-service-role.yaml):

apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRole
metadata:
  name: mod-user
  namespace: default
spec:
  rules:
  - services: ["*"]
    paths: ["*"]
    methods: ["*"]

ಆದರೆ ಪ್ರವೇಶ ಟೋಕನ್ ಹಕ್ಕು ಹೊಂದಿರುವ ಬಳಕೆದಾರರಿಗೆ ಮಾತ್ರ ನಾವು ಅಂತಹ ಹಕ್ಕುಗಳನ್ನು ಬಯಸುತ್ತೇವೆ https://sa.io/group ಅರ್ಥದೊಂದಿಗೆ Moderators (mod-service-role-binding.yaml):

apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRoleBinding
metadata:
  name: mod-user-binding
  namespace: default
spec:
  subjects:
  - properties:
      request.auth.claims[https://sa.io/group]: "Moderators"
  roleRef:
    kind: ServiceRole
name: "mod-user" 

ಸಂರಚನೆಗಳನ್ನು ಅನ್ವಯಿಸೋಣ:

$ kubectl apply -f resource-manifests/istio/security/mod-role.yaml
servicerole.rbac.istio.io/mod-user created
servicerolebinding.rbac.istio.io/mod-user-binding created

ದೂತರಲ್ಲಿ ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುವುದರಿಂದ, ಅಧಿಕೃತ ನಿಯಮಗಳು ಜಾರಿಗೆ ಬರಲು ಒಂದೆರಡು ನಿಮಿಷಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ಬಳಕೆದಾರರು ಮತ್ತು ಮಾಡರೇಟರ್‌ಗಳು ವಿವಿಧ ಹಂತದ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿದ್ದಾರೆ ಎಂದು ನೀವು ನಂತರ ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬಹುದು.

ಈ ಭಾಗದಲ್ಲಿ ತೀರ್ಮಾನ

ಗಂಭೀರವಾಗಿ ಆದರೂ, ನೀವು ಎಂದಾದರೂ ದೃಢೀಕರಣ ಮತ್ತು ದೃಢೀಕರಣಕ್ಕೆ ಸರಳವಾದ, ಪ್ರಯತ್ನವಿಲ್ಲದ, ಸ್ಕೇಲೆಬಲ್ ಮತ್ತು ಸುರಕ್ಷಿತ ವಿಧಾನವನ್ನು ನೋಡಿದ್ದೀರಾ?

ಸೇವೆಗಳಿಗೆ ಅಂತಿಮ ಬಳಕೆದಾರರ ಪ್ರವೇಶದ ದೃಢೀಕರಣ ಮತ್ತು ದೃಢೀಕರಣದ ಮೇಲೆ ಉತ್ತಮವಾದ ನಿಯಂತ್ರಣವನ್ನು ಸಾಧಿಸಲು ಕೇವಲ ಮೂರು ಇಸ್ಟಿಯೊ ಸಂಪನ್ಮೂಲಗಳು (RbacConfig, ServiceRole ಮತ್ತು ServiceRoleBinding) ಅಗತ್ಯವಿದೆ.

ಹೆಚ್ಚುವರಿಯಾಗಿ, ನಮ್ಮ ರಾಯಭಾರಿ ಸೇವೆಗಳಿಂದ ಈ ಸಮಸ್ಯೆಗಳನ್ನು ನಾವು ನೋಡಿಕೊಂಡಿದ್ದೇವೆ, ಸಾಧಿಸಿದ್ದೇವೆ:

  • ಭದ್ರತಾ ಸಮಸ್ಯೆಗಳು ಮತ್ತು ದೋಷಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಸಾಮಾನ್ಯ ಕೋಡ್ ಪ್ರಮಾಣವನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು;
  • ಒಂದು ಅಂತ್ಯಬಿಂದುವು ಹೊರಗಿನಿಂದ ಪ್ರವೇಶಿಸಬಹುದಾದ ಮತ್ತು ಅದನ್ನು ವರದಿ ಮಾಡಲು ಮರೆತಿರುವ ಮೂರ್ಖ ಸನ್ನಿವೇಶಗಳ ಸಂಖ್ಯೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು;
  • ಪ್ರತಿ ಬಾರಿ ಹೊಸ ಪಾತ್ರ ಅಥವಾ ಹಕ್ಕನ್ನು ಸೇರಿಸಿದಾಗ ಎಲ್ಲಾ ಸೇವೆಗಳನ್ನು ನವೀಕರಿಸುವ ಅಗತ್ಯವನ್ನು ತೆಗೆದುಹಾಕುವುದು;
  • ಹೊಸ ಸೇವೆಗಳು ಸರಳ, ಸುರಕ್ಷಿತ ಮತ್ತು ವೇಗವಾಗಿರುತ್ತವೆ.

ತೀರ್ಮಾನಕ್ಕೆ

Istio ತಂಡಗಳು ತಮ್ಮ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಸೇವೆಗಳಿಗೆ ಓವರ್‌ಹೆಡ್ ಸೇರಿಸದೆಯೇ ವ್ಯಾಪಾರ-ನಿರ್ಣಾಯಕ ಕಾರ್ಯಗಳ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸಲು ಅನುಮತಿಸುತ್ತದೆ, ಅವುಗಳನ್ನು ಸೂಕ್ಷ್ಮ ಸ್ಥಿತಿಗೆ ಹಿಂತಿರುಗಿಸುತ್ತದೆ.

ಲೇಖನವು (ಮೂರು ಭಾಗಗಳಲ್ಲಿ) ನೈಜ ಯೋಜನೆಗಳಲ್ಲಿ ಇಸ್ಟಿಯೊದೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಲು ಮೂಲಭೂತ ಜ್ಞಾನ ಮತ್ತು ಸಿದ್ಧವಾದ ಪ್ರಾಯೋಗಿಕ ಸೂಚನೆಗಳನ್ನು ಒದಗಿಸಿದೆ.

ಅನುವಾದಕರಿಂದ PS

ನಮ್ಮ ಬ್ಲಾಗ್‌ನಲ್ಲಿಯೂ ಓದಿ:

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ