Security and Authentication#

As a developer, you are responsible for securing access to any application using the NeMo ecosystem, including an authentication layer between users and your application and securing communication between services in your application.

Rate Limiting#

NIMs do not impose rate limits. If you want to restrict access to your application, implement rate limiting in a gateway or proxy. To limit the number of requests waiting for batch processing, set the batcher queue depth with NIM_SERVER_MAX_QUEUE_SIZE.

Ports#

Set the HTTP listen address with NIM_SERVER_BIND_ADDR in host:port format. The default is 0.0.0.0:8000. Expose this address only to clients that require access to the HTTP API.

To enable the optional KServe V2 gRPC API, set NIM_SERVER_GRPC_BIND_ADDR in host:port format. The gRPC API is disabled when this variable is unset. Expose the gRPC address only to clients that require access to that API.

Additional Security Reminders#

Important

As a Developer, you must secure your own API endpoints. We suggest using a proxy as well as HTTPS/TLS 1.2.

Incident Response#

Secrets#

If you deploy a NIM for BGR component using Helm charts, you will need at least two secrets to set up in that namespace:

  • An image pull secret for NGC

  • An NGC API key secret

If your cluster requires additional image pull secrets for custom init containers, you’ll need those also.

Create the secrets according to your organization’s requirements and Kubernetes secrets best practices, but for POCs and to set up secrets quickly you can use the following, where NAMESPACE is the name of your namespace:

kubectl \
    create secret -n NAMESPACE docker-registry ngc-secret  \
    --docker-server=nvcr.io --docker-username='$oauthtoken' \
    --docker-password=$NGC_API_KEY

kubectl \
    create secret -n NAMESPACE generic ngc-api  \
    --from-literal=NGC_API_KEY=$NGC_API_KEY

We recommend that you store credentials in a secret management solution.

Logging#

To view the service logs for your running container, first identify the container ID and then stream the logs.

  1. Find the container ID:

    docker ps
    
  2. View the logs:

    docker logs <container-id> -f
    

For information about securing your Docker container and log files, refer to Docker security.