-
Processors
- AttributeRollingWindow
- AttributesToCSV
- AttributesToJSON
- CalculateRecordStats
- CaptureChangeMySQL
- CompressContent
- ConnectWebSocket
- ConsumeAMQP
- ConsumeAzureEventHub
- ConsumeBoxEnterpriseEvents
- ConsumeBoxEvents
- ConsumeElasticsearch
- ConsumeGCPubSub
- ConsumeIMAP
- ConsumeJMS
- ConsumeKafka
- ConsumeKinesis
- ConsumeKinesisStream
- ConsumeMQTT
- ConsumePOP3
- ConsumeSlack
- ConsumeTwitter
- ConsumeWindowsEventLog
- ControlRate
- ConvertCharacterSet
- ConvertRecord
- CopyAzureBlobStorage_v12
- CopyS3Object
- CountText
- CreateBoxFileMetadataInstance
- CreateBoxMetadataTemplate
- CryptographicHashContent
- DebugFlow
- DecryptContentAge
- DecryptContentPGP
- DeduplicateRecord
- DeleteAzureBlobStorage_v12
- DeleteAzureDataLakeStorage
- DeleteBoxFileMetadataInstance
- DeleteByQueryElasticsearch
- DeleteDynamoDB
- DeleteFile
- DeleteGCSObject
- DeleteGridFS
- DeleteMongo
- DeleteS3Object
- DeleteSFTP
- DeleteSQS
- DetectDuplicate
- DistributeLoad
- DuplicateFlowFile
- EncodeContent
- EncryptContentAge
- EncryptContentPGP
- EnforceOrder
- EvaluateJsonPath
- EvaluateXPath
- EvaluateXQuery
- ExecuteGroovyScript
- ExecuteProcess
- ExecuteScript
- ExecuteSQL
- ExecuteSQLRecord
- ExecuteStreamCommand
- ExtractAvroMetadata
- ExtractEmailAttachments
- ExtractEmailHeaders
- ExtractGrok
- ExtractHL7Attributes
- ExtractRecordSchema
- ExtractStructuredBoxFileMetadata
- ExtractText
- FetchAzureBlobStorage_v12
- FetchAzureDataLakeStorage
- FetchBoxFile
- FetchBoxFileInfo
- FetchBoxFileMetadataInstance
- FetchBoxFileRepresentation
- FetchDistributedMapCache
- FetchDropbox
- FetchFile
- FetchFTP
- FetchGCSObject
- FetchGoogleDrive
- FetchGridFS
- FetchS3Object
- FetchSFTP
- FetchSmb
- FilterAttribute
- FlattenJson
- ForkEnrichment
- ForkRecord
- GenerateFlowFile
- GenerateRecord
- GenerateTableFetch
- GeoEnrichIP
- GeoEnrichIPRecord
- GeohashRecord
- GetAsanaObject
- GetAwsPollyJobStatus
- GetAwsTextractJobStatus
- GetAwsTranscribeJobStatus
- GetAwsTranslateJobStatus
- GetAzureEventHub
- GetAzureQueueStorage_v12
- GetBoxFileCollaborators
- GetBoxGroupMembers
- GetDynamoDB
- GetElasticsearch
- GetFile
- GetFileResource
- GetFTP
- GetGcpVisionAnnotateFilesOperationStatus
- GetGcpVisionAnnotateImagesOperationStatus
- GetHubSpot
- GetMongo
- GetMongoRecord
- GetS3ObjectMetadata
- GetS3ObjectTags
- GetSFTP
- GetShopify
- GetSmbFile
- GetSNMP
- GetSplunk
- GetSQS
- GetWorkdayReport
- GetZendesk
- HandleHttpRequest
- HandleHttpResponse
- IdentifyMimeType
- InvokeHTTP
- InvokeScriptedProcessor
- ISPEnrichIP
- JoinEnrichment
- JoltTransformJSON
- JoltTransformRecord
- JSLTTransformJSON
- JsonQueryElasticsearch
- ListAzureBlobStorage_v12
- ListAzureDataLakeStorage
- ListBoxFile
- ListBoxFileInfo
- ListBoxFileMetadataInstances
- ListBoxFileMetadataTemplates
- ListDatabaseTables
- ListDropbox
- ListenFTP
- ListenHTTP
- ListenOTLP
- ListenSlack
- ListenSyslog
- ListenTCP
- ListenTrapSNMP
- ListenUDP
- ListenUDPRecord
- ListenWebSocket
- ListFile
- ListFTP
- ListGCSBucket
- ListGoogleDrive
- ListS3
- ListSFTP
- ListSmb
- LogAttribute
- LogMessage
- LookupAttribute
- LookupRecord
- MergeContent
- MergeRecord
- ModifyBytes
- ModifyCompression
- MonitorActivity
- MoveAzureDataLakeStorage
- Notify
- PackageFlowFile
- PaginatedJsonQueryElasticsearch
- ParseEvtx
- ParseNetflowv5
- ParseSyslog
- ParseSyslog5424
- PartitionRecord
- PublishAMQP
- PublishGCPubSub
- PublishJMS
- PublishKafka
- PublishMQTT
- PublishSlack
- PutAzureBlobStorage_v12
- PutAzureCosmosDBRecord
- PutAzureDataExplorer
- PutAzureDataLakeStorage
- PutAzureEventHub
- PutAzureQueueStorage_v12
- PutBigQuery
- PutBoxFile
- PutCloudWatchMetric
- PutDatabaseRecord
- PutDistributedMapCache
- PutDropbox
- PutDynamoDB
- PutDynamoDBRecord
- PutElasticsearchJson
- PutElasticsearchRecord
- PutEmail
- PutFile
- PutFTP
- PutGCSObject
- PutGoogleDrive
- PutGridFS
- PutIcebergRecord
- PutKinesisFirehose
- PutKinesisStream
- PutLambda
- PutMongo
- PutMongoBulkOperations
- PutMongoRecord
- PutRecord
- PutRedisHashRecord
- PutS3Object
- PutSalesforceObject
- PutSFTP
- PutSmbFile
- PutSNS
- PutSplunk
- PutSplunkHTTP
- PutSQL
- PutSQS
- PutSyslog
- PutTCP
- PutUDP
- PutWebSocket
- PutZendeskTicket
- QueryAirtableTable
- QueryAzureDataExplorer
- QueryDatabaseTable
- QueryDatabaseTableRecord
- QueryRecord
- QuerySalesforceObject
- QuerySplunkIndexingStatus
- RemoveRecordField
- RenameRecordField
- ReplaceText
- ReplaceTextWithMapping
- RetryFlowFile
- RouteHL7
- RouteOnAttribute
- RouteOnContent
- RouteText
- RunMongoAggregation
- SampleRecord
- ScanAttribute
- ScanContent
- ScriptedFilterRecord
- ScriptedPartitionRecord
- ScriptedTransformRecord
- ScriptedValidateRecord
- SearchElasticsearch
- SegmentContent
- SendTrapSNMP
- SetSNMP
- SignContentPGP
- SplitAvro
- SplitContent
- SplitExcel
- SplitJson
- SplitPCAP
- SplitRecord
- SplitText
- SplitXml
- StartAwsPollyJob
- StartAwsTextractJob
- StartAwsTranscribeJob
- StartAwsTranslateJob
- StartGcpVisionAnnotateFilesOperation
- StartGcpVisionAnnotateImagesOperation
- TagS3Object
- TailFile
- TransformXml
- UnpackContent
- UpdateAttribute
- UpdateBoxFileMetadataInstance
- UpdateByQueryElasticsearch
- UpdateCounter
- UpdateDatabaseTable
- UpdateRecord
- ValidateCsv
- ValidateJson
- ValidateRecord
- ValidateXml
- VerifyContentMAC
- VerifyContentPGP
- Wait
-
Controller Services
- ADLSCredentialsControllerService
- ADLSCredentialsControllerServiceLookup
- ADLSIcebergFileIOProvider
- AmazonGlueEncodedSchemaReferenceReader
- AmazonGlueSchemaRegistry
- AmazonMSKConnectionService
- ApicurioSchemaRegistry
- AvroReader
- AvroRecordSetWriter
- AvroSchemaRegistry
- AWSCredentialsProviderControllerService
- AwsRdsIamDatabasePasswordProvider
- AzureBlobStorageFileResourceService
- AzureCosmosDBClientService
- AzureDataLakeStorageFileResourceService
- AzureEventHubRecordSink
- AzureStorageCredentialsControllerService_v12
- AzureStorageCredentialsControllerServiceLookup_v12
- CEFReader
- ConfluentEncodedSchemaReferenceReader
- ConfluentEncodedSchemaReferenceWriter
- ConfluentProtobufMessageNameResolver
- ConfluentSchemaRegistry
- CSVReader
- CSVRecordLookupService
- CSVRecordSetWriter
- DatabaseRecordLookupService
- DatabaseRecordSink
- DatabaseTableSchemaRegistry
- DBCPConnectionPool
- DBCPConnectionPoolLookup
- DeveloperBoxClientService
- DistributedMapCacheLookupService
- ElasticSearchClientServiceImpl
- ElasticSearchLookupService
- ElasticSearchStringLookupService
- EmailRecordSink
- EmbeddedHazelcastCacheManager
- ExcelReader
- ExternalHazelcastCacheManager
- FreeFormTextRecordSetWriter
- GCPCredentialsControllerService
- GCSFileResourceService
- GrokReader
- HazelcastMapCacheClient
- HikariCPConnectionPool
- HttpRecordSink
- IPLookupService
- JettyWebSocketClient
- JettyWebSocketServer
- JMSConnectionFactoryProvider
- JndiJmsConnectionFactoryProvider
- JsonConfigBasedBoxClientService
- JsonPathReader
- JsonRecordSetWriter
- JsonTreeReader
- JWTBearerOAuth2AccessTokenProvider
- Kafka3ConnectionService
- KerberosKeytabUserService
- KerberosPasswordUserService
- KerberosTicketCacheUserService
- LoggingRecordSink
- MapCacheClientService
- MapCacheServer
- MongoDBControllerService
- MongoDBLookupService
- ParquetIcebergWriter
- PEMEncodedSSLContextProvider
- PropertiesFileLookupService
- ProtobufReader
- ReaderLookup
- RecordSetWriterLookup
- RecordSinkServiceLookup
- RedisConnectionPoolService
- RedisDistributedMapCacheClientService
- RESTIcebergCatalog
- RestLookupService
- S3FileResourceService
- S3IcebergFileIOProvider
- ScriptedLookupService
- ScriptedReader
- ScriptedRecordSetWriter
- ScriptedRecordSink
- SetCacheClientService
- SetCacheServer
- SimpleCsvFileLookupService
- SimpleDatabaseLookupService
- SimpleKeyValueLookupService
- SimpleRedisDistributedMapCacheClientService
- SimpleScriptedLookupService
- SiteToSiteReportingRecordSink
- SlackRecordSink
- SmbjClientProviderService
- StandardAsanaClientProviderService
- StandardAzureCredentialsControllerService
- StandardDatabaseDialectService
- StandardDropboxCredentialService
- StandardFileResourceService
- StandardHashiCorpVaultClientService
- StandardHttpContextMap
- StandardJsonSchemaRegistry
- StandardKustoIngestService
- StandardKustoQueryService
- StandardOauth2AccessTokenProvider
- StandardPGPPrivateKeyService
- StandardPGPPublicKeyService
- StandardPrivateKeyService
- StandardProtobufReader
- StandardProxyConfigurationService
- StandardRestrictedSSLContextService
- StandardS3EncryptionService
- StandardSSLContextService
- StandardWebClientServiceProvider
- Syslog5424Reader
- SyslogReader
- UDPEventRecordSink
- VolatileSchemaCache
- WindowsEventLogReader
- XMLFileLookupService
- XMLReader
- XMLRecordSetWriter
- YamlTreeReader
- ZendeskRecordSink
GCPCredentialsControllerService 2.7.1
- Bundle
- org.apache.nifi | nifi-gcp-nar
- Description
- Defines credentials for Google Cloud Platform processors. Uses Application Default credentials without configuration. Application Default credentials support environmental variable (GOOGLE_APPLICATION_CREDENTIALS) pointing to a credential file, the config generated by `gcloud auth application-default login`, AppEngine/Compute Engine service accounts, etc.
- Tags
- credentials, gcp, provider
- Input Requirement
- Supports Sensitive Dynamic Properties
- false
-
Additional Details for GCPCredentialsControllerService 2.7.1
GCPCredentialsControllerService
The GCPCredentialsControllerService centralizes all authentication strategies used by NiFi components that interact with Google Cloud. Each strategy exposes only the properties it requires, which lets administrators swap approaches without touching downstream processors. This guide summarizes every supported strategy.
Application Default Credentials
Application Default Credentials (ADC) allow NiFi to inherit credentials exposed through the runtime environment, including:
- The
GOOGLE_APPLICATION_CREDENTIALSenvironment variable referencing a service-account key file gcloud auth application-default loginon development machines- Cloud Shell or other Google-managed environments that inject ADC automatically
No extra properties are required. Confirm that the account supplying the ADC token has the IAM roles needed by the processors referencing this controller service.
Service Account Credentials (JSON File)
Use this strategy when the service-account key material is stored on disk. Configure the Service Account JSON File property to point at the JSON key file. NiFi reads the file when the controller service is enabled and caches the Google credentials.
Best practices
- Restrict filesystem permissions so only the NiFi service user can read the key.
- Rotate keys regularly and delete unused keys from the Google Cloud Console.
- When impersonating a domain user, set Delegation Strategy to Delegated Account and provide Delegation User so that NiFi calls Google APIs on behalf of that user.
Service Account Credentials (JSON Value)
This strategy embeds the entire service-account JSON document directly inside the controller-service property. The value is marked sensitive and can be injected through Parameter Contexts to separate credentials from flow definitions.
Best practices
- Store the JSON value in a Parameter Context referenced by this property so you can swap credentials per environment.
- Use NiFi’s Sensitive Property encryption in
nifi.propertiesto encrypt the stored JSON on disk.
Compute Engine Credentials
Select Compute Engine Credentials when NiFi runs on a Google-managed runtime (Compute Engine, GKE, etc.) and should use the instance’s attached service account. Google automatically refreshes the metadata server tokens, so no additional properties are required.
Best practices
- Grant the instance service account only the roles required by your flows.
- If multiple NiFi nodes share the same instance template, verify that all nodes have access to the same IAM permissions or configure Workload Identity Federation for finer control.
Workload Identity Federation
Workload Identity Federation (WIF) exchanges an external identity-provider token for a short-lived Google Cloud access token via Google’s Security Token Service (STS). The controller service configures Google’s
IdentityPoolCredentials, allowing Google client libraries to refresh Google Cloud tokens automatically.1. Configure Workload Identity Federation in Google Cloud
# Create a pool (only once per environment) gcloud iam workload-identity-pools create nifi-pool \ --project=MY_PROJECT_ID \ --location=global \ --display-name="NiFi Pool" # Create a provider bound to your IdP (example for OIDC named myidp) gcloud iam workload-identity-pools providers create-oidc myidp \ --project=MY_PROJECT_ID \ --location=global \ --workload-identity-pool=nifi-pool \ --display-name="My Identity Provider" \ --issuer-uri="https://identity.myidp.com/oauth2/..." \ --allowed-audiences="//iam.googleapis.com/projects/<PROJECT_NUMBER>/locations/global/workloadIdentityPools/nifi-pool/providers/myidp" \ --attribute-mapping="google.subject=assertion.sub"Record the audience string printed by the command; it must be copied into NiFi’s Audience property exactly:
//iam.googleapis.com/projects/<PROJECT_NUMBER>/locations/global/workloadIdentityPools/nifi-pool/providers/myidp2. Authorize the workload identity principal for Google Cloud resources
The STS-issued access token represents the workload identity principal itself. Grant IAM roles to that identity on projects or specific resources:
# Project scoped gcloud projects add-iam-policy-binding MY_PROJECT_ID \ --member="principal://iam.googleapis.com/projects/<PROJECT_NUMBER>/locations/global/workloadIdentityPools/nifi-pool/subject/IDENTITY_SUBJECT" \ --role="roles/storage.objectViewer" # Bucket scoped (example) gcloud storage buckets add-iam-policy-binding gs://MY_BUCKET \ --member="principal://iam.googleapis.com/projects/<PROJECT_NUMBER>/locations/global/workloadIdentityPools/nifi-pool/subject/IDENTITY_SUBJECT" \ --role="roles/storage.objectViewer"IDENTITY_SUBJECTmust match the claim you mapped in the provider (for exampleassertion.sub). Service-account impersonation is not yet supported, so grant roles directly to the workload identity principal.3. Configure NiFi properties (Workload Identity strategy selected)
Property Guidance Audience Paste the provider resource name recorded above. Scope Defaults to https://www.googleapis.com/auth/cloud-platform; supply space- or comma-separated scopes if you need fewer permissions.STS Token Endpoint Optional override for the Google STS endpoint; leave blank to use https://sts.googleapis.com/v1/token.Subject Token Provider Controller Service that retrieves the upstream workload identity token (JWT or access token). The token must contain the claims referenced by your attribute mapping. Subject Token Type Defaults to urn:ietf:params:oauth:token-type:jwt. Choose the alternate access-token type only when the upstream provider issues OAuth access tokens instead of JWTs.Proxy Configuration Service Optional controller service allowing NiFi to reach STS through HTTP/SOCKS proxies. Once these properties are set, enable GCPCredentialsControllerService. Processors referencing it immediately obtain
IdentityPoolCredentials, and Google’s libraries refresh access tokens automatically using the configured subject -token provider.Verification workflow
- Enable or refresh the Subject Token Provider controller service.
- Use the Verify action on GCPCredentialsControllerService. Successful verification confirms that NiFi can exchange the subject token with Google STS using the configured proxy, audience, and scopes.
- Enable dependent processors. No additional controller services are required.
Troubleshooting
Symptom Guidance 403 Caller does not have storage.objects.listConfirm the workload identity principal has the required IAM role: gcloud projects get-iam-policy/gcloud storage buckets get-iam-policy. Ensure the attribute mapping emits the same subject referenced in IAM.STS errors during verification Double-check the Audience string and STS Token Endpoint. Use DEBUG logs or the Verify dialog output to inspect the STS response. Ensure the subject token includes the mapped claims. Access token rejected by Google APIs Call the API directly with the federated token (for example, curl -H "Authorization: Bearer TOKEN" https://storage.googleapis.com/...). If it still fails, revisit IAM bindings or scope selection.Need to rotate upstream tokens The controller service requests a fresh subject token 60 seconds before expiry. Trigger Refresh on the Subject Token Provider to invalidate cached tokens immediately.
With every strategy available from a single controller-service configuration, NiFi users can migrate between service-account keys, Compute Engine, Application Default Credentials, and Workload Identity Federation without introducing new controller services or updating processor properties. Adjust the authentication strategy once and all dependent processors automatically pick up the new credentials.
- The
-
Audience
The audience corresponding to the target Workload Identity Provider, typically the full resource name.
- Display Name
- Audience
- Description
- The audience corresponding to the target Workload Identity Provider, typically the full resource name.
- API Name
- Audience
- Expression Language Scope
- Not Supported
- Sensitive
- false
- Required
- true
- Dependencies
-
- Authentication Strategy is set to any of [Workload Identity Federation]
-
Authentication Strategy
Specifies how NiFi authenticates to Google Cloud. Depending on the strategy, additional properties might be required.
- Display Name
- Authentication Strategy
- Description
- Specifies how NiFi authenticates to Google Cloud. Depending on the strategy, additional properties might be required.
- API Name
- Authentication Strategy
- Default Value
- Application Default Credentials
- Allowable Values
-
- Application Default Credentials
- Service Account Credentials (Json File)
- Service Account Credentials (Json Value)
- Workload Identity Federation
- Compute Engine Credentials
- Expression Language Scope
- Not Supported
- Sensitive
- false
- Required
- true
-
Delegation Strategy
The Delegation Strategy determines which account is used when calls are made with the GCP Credential.
- Display Name
- Delegation Strategy
- Description
- The Delegation Strategy determines which account is used when calls are made with the GCP Credential.
- API Name
- Delegation Strategy
- Default Value
- Service Account
- Allowable Values
-
- Service Account
- Delegated Account
- Expression Language Scope
- Not Supported
- Sensitive
- false
- Required
- true
- Dependencies
-
- Authentication Strategy is set to any of [Service Account Credentials (Json File), Service Account Credentials (Json Value)]
-
Delegation User
This user will be impersonated by the service account for api calls. API calls made using this credential will appear as if they are coming from delegate user with the delegate user's access. Any scopes supplied from processors to this credential must have domain-wide delegation setup with the service account.
- Display Name
- Delegation User
- Description
- This user will be impersonated by the service account for api calls. API calls made using this credential will appear as if they are coming from delegate user with the delegate user's access. Any scopes supplied from processors to this credential must have domain-wide delegation setup with the service account.
- API Name
- Delegation User
- Expression Language Scope
- Environment variables defined at JVM level and system properties
- Sensitive
- false
- Required
- true
- Dependencies
-
- Authentication Strategy is set to any of [Service Account Credentials (Json File), Service Account Credentials (Json Value)]
- Delegation Strategy is set to any of [Delegated Account]
-
Proxy Configuration Service
Specifies the Proxy Configuration Controller Service to proxy network requests.
- Display Name
- Proxy Configuration Service
- Description
- Specifies the Proxy Configuration Controller Service to proxy network requests.
- API Name
- Proxy Configuration Service
- Service Interface
- org.apache.nifi.proxy.ProxyConfigurationService
- Service Implementations
- Expression Language Scope
- Not Supported
- Sensitive
- false
- Required
- false
-
Scope
OAuth2 scopes requested for the exchanged access token. Multiple scopes can be separated by space or comma.
- Display Name
- Scope
- Description
- OAuth2 scopes requested for the exchanged access token. Multiple scopes can be separated by space or comma.
- API Name
- Scope
- Default Value
- https://www.googleapis.com/auth/cloud-platform
- Expression Language Scope
- Not Supported
- Sensitive
- false
- Required
- true
- Dependencies
-
- Authentication Strategy is set to any of [Workload Identity Federation]
-
Service Account JSON
The raw JSON containing a Service Account keyfile.
- Display Name
- Service Account JSON
- Description
- The raw JSON containing a Service Account keyfile.
- API Name
- Service Account JSON
- Expression Language Scope
- Environment variables defined at JVM level and system properties
- Sensitive
- true
- Required
- true
- Dependencies
-
- Authentication Strategy is set to any of [Service Account Credentials (Json Value)]
-
Service Account JSON File
Path to a file containing a Service Account key file in JSON format.
- Display Name
- Service Account JSON File
- Description
- Path to a file containing a Service Account key file in JSON format.
- API Name
- Service Account JSON File
- Expression Language Scope
- Not Supported
- Sensitive
- false
- Required
- true
- Dependencies
-
- Authentication Strategy is set to any of [Service Account Credentials (Json File)]
-
STS Token Endpoint
Google Security Token Service endpoint used for token exchange.
- Display Name
- STS Token Endpoint
- Description
- Google Security Token Service endpoint used for token exchange.
- API Name
- STS Token Endpoint
- Default Value
- https://sts.googleapis.com/v1/token
- Expression Language Scope
- Not Supported
- Sensitive
- false
- Required
- true
- Dependencies
-
- Authentication Strategy is set to any of [Workload Identity Federation]
-
Subject Token Provider
Controller Service that retrieves the external workload identity token to exchange.
- Display Name
- Subject Token Provider
- Description
- Controller Service that retrieves the external workload identity token to exchange.
- API Name
- Subject Token Provider
- Service Interface
- org.apache.nifi.oauth2.OAuth2AccessTokenProvider
- Service Implementations
- Expression Language Scope
- Not Supported
- Sensitive
- false
- Required
- true
- Dependencies
-
- Authentication Strategy is set to any of [Workload Identity Federation]
-
Subject Token Type
The type of token returned by the Subject Token Provider.
- Display Name
- Subject Token Type
- Description
- The type of token returned by the Subject Token Provider.
- API Name
- Subject Token Type
- Default Value
- urn:ietf:params:oauth:token-type:jwt
- Allowable Values
-
- urn:ietf:params:oauth:token-type:jwt
- urn:ietf:params:oauth:token-type:id_token
- urn:ietf:params:oauth:token-type:access_token
- Expression Language Scope
- Not Supported
- Sensitive
- false
- Required
- true
- Dependencies
-
- Authentication Strategy is set to any of [Workload Identity Federation]
| Required Permission | Explanation |
|---|---|
| access environment credentials | The default configuration can read environment variables and system properties for credentials |