Kernel density may be thought as a equally-weighted (with weights $\tfrac{1}{nh}$) mixture of kernels $K$ centered at datapoints $y_i$
$$
f(x) = \sum_{i=1}^n \frac{1}{nh} K\left(\frac{x - y_i}{h}\right)
$$
To draw samples from univariate kernel density, the following procedure can be applied (Silverman, 1986):
Step 1. Sample $i$ uniformly with replacement from $1,\dots,n$.
Step 2. Generate $\varepsilon$ to have probability density $K$.
Step 3. Set $x = y_i + h\varepsilon$.
If samples are required to have the same variance as your data, the procedure is modified as following:
Step 3'.
$$
x = \bar y + (y_i - \bar y + h\varepsilon)/(1 + h^2 \sigma^2_K/\sigma^2_Y)^{1/2}
$$
where $\sigma_K^2$ is variance of the kernel, while $\bar y$ and $\sigma_Y^2$ are variance and mean of $y$. If you are using Gaussian kernel, then to generate random draws from it you basically need only to be able to draw samples from standard normal distribution (for $\varepsilon$) and from discrete uniform distribution (for $i$'s).
The procedure can be easily extended for multivariate kernel densities, where instead of drawing single $y_i$ values, you draw whole rows of the $Y$ matrix.
To learn more you can check the documentation of kernelboot package for R (disclaimer: I'm the author) that goes into more details and provides multiple references on this subject.
Silverman, B. W. (1986). Density estimation for statistics and data analysis.
Chapman and Hall/CRC.